wxWidgets é uma biblioteca de classes para criar aplicações com interface gráfica em C++, mas, além de criação de interface gráfica, esta biblioteca provê também classes para manipulação de streams, banco de dados, threads, etc. É uma biblioteca de código aberto e multiplataforma, funciona na maioria dos sistemas operacionais como: Windows, Linux, Mac, etc. Seu projeto foi iniciado em 1992 por Julian Smart.
Instalação
Instalação
- Linux:
Vá ao terminal e digite:
cd /caminho/wxGTK-2.8.x (o caminho onde você extraiu o pacote)
mkdir gtk-build
cd gtk-build
../configure --enable-unicode --with-opengl --disable-shared
make
sudo make install
Para testar a instalação digite: wx-config --version
Para desenvolver seus programas eu recomendo a utilização da IDE Code::Blocks que pode ser baixada em: http://www.codeblocks.org/downloads
Se você prefere compilar seus programas pela linha de comando faça da seguinte maneira:
g++ `wx-config --cppflags` `wx-config --libs` programa.cpp
- Windows
Primeiro Programa
No nosso primeiro programa vamos simplesmente criar uma janela com um texto no centro e um botão que ao ser clicado finaliza a aplicação.
Segue abaixo o código.
Segue abaixo o código.
#include <wx/wx.h>
//frame.hclass MeuFrame : public wxFrame {
private:
wxPanel *painel;
wxButton *btnsair;
wxStaticText *label;
public:
MeuFrame(const wxString &titulo);
void Sair(wxCommandEvent &evt);
};
#include "frame.h"
//frame.cpp
MeuFrame::MeuFrame(const wxString& titulo):
wxFrame(NULL, wxID_ANY, titulo, wxDefaultPosition, wxSize(500, 400))
{
//cria-se o widget wxPanel que fica dentro de um wxFrame
painel = new wxPanel(this, wxID_ANY);
//cria-se o widget wxStaticText que fica dentro do panel
label = new wxStaticText(painel, -1, wxT("Meu Primeiro Programa com wxWidgets"), wxPoint(100, 200));
//cria-se o widget wxButton que fica dentro do panel
//wxPoint inica as coodenadas do botão dentro do painel e wxSize seu tamanho
btnsair = new wxButton(painel, wxID_EXIT, wxT("Sair"), wxPoint(200, 250), wxSize(50, 30));
//conecta-se o evento wxEVT_COMMAND_BUTTON_CLICKED ao método sair da classe //MeuFrame
//passando como parametro o ID do botão clicado
Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MeuFrame::Sair));
//atribui-se o foco ao botão sair
btnsair->SetFocus();
//centraliza o Frame na tela
Centre();
}
void MeuFrame::Sair(wxCommandEvent &evt) {
//fecha a aplicação
Close(true);
}
#include <wx/wx.h>
//main.h
class MinhaApp : public wxApp {
public:
virtual bool OnInit();
};
#include "main.h"
#include "frame.h"
//main.cpp
//A macro que implementa a aplicação
IMPLEMENT_APP(MinhaApp)
bool MinhaApp::OnInit()
{
//criamos o Frame passando o titulo da aplicação para o construtor
MeuFrame *frame = new MeuFrame(wxT("Primeiro Programa com wxWidgets"));
//mostramos o frame na tela
frame->Show(true);
return true;
}
Danilo muito legal a sua iniciativa, estou começando agora wxWidget e seu blog está sendo uma mão na roda.
ResponderExcluirUma pergunta.
Eu compilei o meu programa com wxGtk mas uso o KDE como ambiente gráfico, na hora de executar o programa apareceu um icone do XOrg na topo da janela, você sabe me dizer se o programa usa Gtk ou X11?
Abraços.
Caio, fico feliz em saber que meu blog está ajudando no seu aprendizado.
ResponderExcluirO Gtk é o toolkit que roda na plataforma X11.
A plataforma X11 aceita vários toolkits para interface gráfica, os mais usados são o Gtk (GNOME) e o QT (KDE), ou seja, Gtk e X11 são coisas distintas. O Gtk é muito utilizado no ambiente GNOME mas também pode ser utilizado em outros ambientes como o KDE (que é seu caso).
Você pode definir o ícone da sua aplicação através do método SetIcon no construtor do frame. Ex: SetIcon(wxIcon(wxT("nome_arquivo.xpm")));
2 erros durante a instalação em linux, que poderão ser resolvidos instalando algumas dependências:
ResponderExcluirErro 1
The development files for GTK+ were not found.
Solução
sudo apt-get install libgtk2.0-dev
Erro 2
configure: error: OpenGL libraries not available
Solução
sudo aptitude install libgl1-mesa-dev libglu1-mesa-dev
Para iniciantes:
ResponderExcluirOnde devo colocar os códigos?
No Code::Blocks. Exemplo:
File > New > Project > wxWidgets project > Go
No wizard do wxWidgets project:
- Escolher versão do wxWidgets instalada, nome e localização do projecto, etc.
- Preferred GUI Builder - wxFormBuilder (deve ser instalado à parte); Application Type - Frame Based
- Compiler: GNU GCC Compiler (deixar as opções seleccionadas por defeito)
- Em linux: Use default wxWidgets configuration; Other options - Create empty project
File > New > Empty File > Sim (adicionar novo ficheiro ao projecto activo) > Nomear o ficheiro
Criar 4 ficheiros no total com os seguintes nomes:
frame.h
frame.cpp
main.h
main.cpp
Copiar para cada um dos ficheiros a parcela do código correspondente.
Obrigado pelos adendos Ricardo.
ResponderExcluirDe nada. Por favor, continue desenvolvendo este blog na medida das suas possibilidades.
ResponderExcluirSim. Vou continuar a desenvolve-lo. No momento me falta um pouco de tempo, mas assim que puder continuarei.
ResponderExcluirGostei do programa, no entanto, onde encontro tutorial sobre o programa em português, livros, apostilas...
ResponderExcluir