gtkmm3学习笔记(一)-HelloWorld

发布于 2021-09-10  997 次阅读


开发环境

  • 系统:Debian 11
  • GTKmm3版本:3.24.2
  • GCC版本:10.2.1
  • IDE:GNOME Builder

使用GNOME Builder新建工程

  1. 在GNOME Builder中新建工程,选择工程名称为"HelloWorld",语言选择C++,模板选择GNOME应用程序。
  2. 打开构建首选项(Alt+,),选择"Default",点击使其激活。这样可以生成二进制文件而不是Flatpak文件。
  3. 切换回编辑器(Alt+1),点击运行,即可编译并运行HelloWorld程序。

命令行编译

进入工程目录,执行以下命令:

$ meson build
$ cd build
$ ninja
$ ./src/helloworld

工程目录结构

.
├── build-aux
│   └── meson
│       └── postinstall.py
├── COPYING
├── data
│   ├── meson.build
│   ├── top.immiq.HelloWorld.appdata.xml.in
│   ├── top.immiq.HelloWorld.desktop.in
│   └── top.immiq.HelloWorld.gschema.xml
├── meson.build
├── po
│   ├── LINGUAS
│   ├── meson.build
│   └── POTFILES
├── src
│   ├── helloworld.gresource.xml
│   ├── helloworld-window.cpp
│   ├── helloworld-window.h
│   ├── helloworld-window.ui
│   ├── main.cpp
│   └── meson.build
└── top.immiq.HelloWorld.json

main.cpp

  • 该文件启动应用程序,并创建了HelloWorld窗口。

helloworld-window.ui

  • GTK推荐使用glade来声明ui,语法为xml,也可以点击查看设计键进行图形化编辑。

helloworld-window.h/.cpp

  • helloworld-window.h和helloworld-window.cpp是定义窗口的头文件和源文件。

从UI文件加载布局的代码如下:

builder = Gtk::Builder::create_from_resource(
"/top/immiq/HelloWorld/helloworld-window.ui");
builder->get_widget("headerbar", headerbar);
builder->get_widget("label", label);

这里使用Gtk::Builder加载了UI文件,并从中获取了headerbar和label两个控件的引用。

参考加载.glade文件

auto builder = Gtk::Builder::create();
builder->add_from_file("/path/to/your/file.glade");
builder->get_widget("your_widget_name", your_widget_pointer);