wxWidgets は、C++ で記述して、Windows、macOS、Linux の GUI アプリケーションを作れる GUI フレームワークです。大変人気があり、 数多くのプログラミング言語に移植されて、wx言語名 という名前の移植版が存在します。今回は本家の C++ 版の wxWidgets を使います。
CentOS でアプリケーションの開発する場合は Develpment Tools をインストールしておくと何かとうまくいく場合が多いです。 まだの方は一応インストールしてみてください。
sudo yum groupinstall "Development Tools"
sudo yum install epel-release
sudo yum --enablerepo=epel install wxGTK wxGTK-devel
// インストールされたか確認します
wx-config --version
2.8.12
実際にアプリケーションを作っていきます。
wxWidgets はアプリケーションのリソースをディレクトリにまとめなければならい というような制限はありません。ソースファイルを記述する場所はどこでも構わないでですが 私はホームディレクトリに Documets というディレクトリを作り、その中に wx というディレクトリを作り、 その中にソースを記述しました。
次の button.cpp を記述して保存してください。
#include <wx/wx.h>
class Button : public wxFrame
{
public:
Button();
void OnQuit(wxCommandEvent & event);
};
class App : public wxApp
{
public:
virtual bool OnInit();
};
Button::Button() : wxFrame(NULL, -1, wxT("Button"))
{
wxPanel *panel = new wxPanel(this, -1);
wxButton *button = new wxButton(panel, wxID_EXIT, wxT("Quit"));
wxBoxSizer *hbox = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
hbox->Add(button, 0, wxALIGN_CENTER);
vbox->Add(hbox, 1, wxALIGN_CENTER);
panel->SetSizer(vbox);
Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(Button::OnQuit));
}
void Button::OnQuit(wxCommandEvent & event)
{
Close();
}
IMPLEMENT_APP(App)
bool App::OnInit()
{
Button *button = new Button();
button->Center(wxCENTER_ON_SCREEN);
button->Show();
return true;
}
wxWidgets には簡易的に実行する方法はありません。必ずビルどしてから実行します。
// コンパイル(ビルド)
g++ button.cpp `wx-config --cppflags --libs` -o button
// ` は '(シングルクォーテーション)とは違います。US キーボードなら ~(チルダ)と同じキーです。
// JIS キーボードの場合は、@キーと同じキーです。
// wxWidget の場合は、ビルド時にコードエラーが表示されます。
// X11 で実行するには次のようにします
./button & X -retro
X11 ではウィンドウのフレーム(タイトルバーやリサイズする機能)はつきません。 Quit ボタンをクリックすると Button アプリが終了します。
、 X11 を終了するには次のようにします。
// 次のコマンドで X11 の画面が閉じます
Ctrl + Alt + F1
// F1 のところは、X11 を起動したコンソールの番号に合わせt、F1、F2、F3 と変えていきます
// ほとんどの場合、コンソール番号 1 からの起動なので、F1 にしました
// 画面は閉じても X11 のタスクは起動したままです。
// そして、次のコマンドで X11 は完全に終了します
Ctrl + C