今回の内容は、wxWidgets プログラミングとほぼ同じです。
CentOS 7 では、wxGTK までしかインストールできませんでしたが、CentOS 8 では wxGTK3 がインストールできます。その結果、GUI のデザインが少し新しくなります。
CentOS でアプリケーションの開発する場合は Develpment Tools をインストールしておくと何かとうまくいく場合が多いみたいです。 まだの方は一応インストールしてみてください。
sudo dnf groupinstall "Development Tools"
sudo dnf install epel-release
sudo dnf --enablerepo=epel install wxGTK3 wxGTK3-devel
// インストールされたか確認します
wx-config --version
3.0.4
実際にアプリケーションを作っていきます。
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, "Button")
{
wxPanel *panel = new wxPanel(this, -1);
wxButton *button = new wxButton(panel, wxID_EXIT, "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();
button->Show();
return true;
}
wxGTK3 では文字列を wxT()
で囲む必要がなくなりました。
buton->Center();
は、wxGTK でもこの書き方で良かったみたいです。
wxWidgets には簡易的に実行する方法はありません。必ずビルどしてから実行します。
// コンパイル(ビルド)
g++ button.cpp `wx-config --cppflags --libs` -o button
// ` は '(シングルクォーテーション)とは違います。US キーボードなら ~(チルダ)と同じキーです。
// JIS キーボードの場合は、@キーと同じキーです。
// wxWidget の場合は、ビルド時にコードエラーが表示されます。
// X11 で実行するには次のようにします
./button & X -retro
wxGTK3 では、ボタンなどのデザインが変わりました。ウィンドウの大きさは 指定していないので、アプリケーションが適当な大きさにしています。 X11 ではウィンドウのフレーム(タイトルバーやリサイズする機能)はつきません。 Quit ボタンをクリックすると Button アプリが終了します。
、 X11 を終了するには次のようにします。
// 次のコマンドで X11 の画面が閉じます
Ctrl + Alt + F1
// F1 のところは、X11 を起動したコンソールの番号に合わせて、F1、F2、F3 と変えていきます
// ほとんどの場合、コンソール番号 1 からの起動なので、F1 にしました
// 画面は閉じても X11 のタスクは起動したままです。
// 次のコマンドで X11 は完全に終了します
Ctrl + C