Imam Ferianto Blogs

sekedar catatan kecil saja

wxWidgets adalah perangkat alat antar platform yang memungkinkan satu listing kode dapat dijalankan oleh beberapa platform seperti WindowsMac OS XGTK+X11, Motif, WinCE, dan lain-lain. Perangkat alat ini dapat digunakan untuk beberapa bahasa pemrograman seperti C++PythonPerl, and C#/.NET.

Tulisan ini adalah contoh bagaimana membuat coding GUI WxWidget pada macos dan windows menggunakan bahasa pemrograman c++. Mengapa menggunakan wxWidget? karena framework ini crossplatform, jadi dengan kode yang sama kita bisa membuat aplikasi untuk mac os dan windows. Hasil output exe yang dihasilkan lebih kecil dari pada menggunakan tools lainnnya. Selain wxwidget ada framework gui crossplatform lainnya yang perlu dicoba yaitu: Qt , GTK dan WxWidgets. Akan kita bahas di kesempatan lainnya

Untuk melakukan compile kita harus menginstall wxmac dan g++ pada mac-os atau windows.

Buatlah sebuah file text dengan nama main.cpp seperti dibawah ini:

//Uncomment the following line if you are compiling this code in Visual Studio
//#include "stdafx.h"
//#include <opencv2/opencv.hpp>
#include <iostream>
#include "wx/wx.h"

using namespace cv;
using namespace std;

//scrolling
class ScrolledWidgetsPane : public wxScrolledWindow
{
public:
ScrolledWidgetsPane(wxWindow* parent, wxWindowID id) : wxScrolledWindow(parent, id)
{
// the sizer will take care of determining the needed scroll size
// (if you don't use sizers you will need to manually set the viewport size)
wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);

// add a series of widgets
for (int w=1; w<=10; w++)
{
wxButton* b = new wxButton(this, wxID_ANY, wxString::Format(wxT("Button %i"), w));
sizer->Add(b, 0, wxALL, 3);
}


SetSizer(sizer);

// this part makes the scrollbars show up
FitInside(); // ask the sizer about the needed size
SetScrollRate(5, 5);
}

};


//app form
class MyForm : public wxFrame
{
public:
MyForm(const wxString& title,const wxSize& size) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, size){

SetBackgroundColour(wxColour(77,77,77));


wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);

ScrolledWidgetsPane* my_image = new ScrolledWidgetsPane(this, wxID_ANY);
sizer->Add(my_image, 1, wxEXPAND);

SetSizer(sizer);


Centre();
}

// Destructor
~MyForm(){

}
};


//app main
class MyApp: public wxApp
{
public:
bool OnInit()
{


MyForm *form = new MyForm(wxT("Welcome Imam Ferianto"),wxSize(600, 400));
form->Show(true);


return true;
}
};

IMPLEMENT_APP(MyApp);

Cara Melakukan Compile Program

g++ -ggdb -std=c++11 \
`pkg-config --cflags opencv4` \
main.cpp -o main \
`pkg-config --cflags --libs opencv4` \
`wx-config --cxxflags --libs`

Output :

Output dari hasil compile diatas adalah sebuah file dengan nama main (mac os), atau main.exe (windows)

Untuk menjalankan programnya ketik:    ./main    

Download Code Main.cpp

Referensi:

Example C application GUI

Compilasi WxWidget 3