当前位置: 首页 > news >正文

Linux应用GUI开发C++ 之gtkmm4(1)

目录

    • 概述
      • GTK
      • gtkmm
    • 安装gtkmm4
    • hello,world
    • codelite配置
    • 代码解释

概述

GTK

GTK是一个小部件工具包。GTK创建的每个用户界面都由小部件组成。这是在C语言中使用GObject实现的,GObject是一个面向对象的C语言框架。窗口小部件是主容器。然后通过向窗口中添加按钮、下拉菜单、输入字段和其他小部件来构建用户界面。如果要创建复杂的用户界面,建议使用GtkBuilder及其特定于GTK的标记描述语言,而不是手动组装界面。

  • GTK是事件驱动的。工具包侦听事件,例如单击按钮,并将事件传递给应用程序。
  • GTK对所有文本使用UTF-8编码。这确保您可以使用您的母语或世界各地的任何其他语言开发应用程序。
  • GTK支持HiDPI显示。为已经定义良好的用户体验增添了一份力量。可以在GTK应用程序中启用高DPI支持。
  • GTK将始终使用最有效的方式绘制应用程序,以最大化性能并利用硬件
  • 在GTK中,指针和触摸事件被无缝处理,使您的应用程序可以在各种输入设备上开箱即用。
    在这里插入图片描述

gtkmm

gtkmm是流行GUI库GTK的官方C++接口。亮点包括类型安全回调,以及一组易于通过继承进行扩展的小部件。您可以使用Gtk::Builder在代码中或使用Glade用户界面设计器创建用户界面。有大量的文档,包括API参考和教程。

gtkmm是根据GNU较宽松通用公共许可证(LGPL)发布的自由软件。

特色
使用继承来派生定制的组件。
类型安全的信号句柄,而且是标准 C++。
多态。
使用标准 C++ 库,包括字符串、容器和迭代器。
通过 UTF8 完全的支持国际化。
完全的 C++ 内存管理
对象组合(Object composition)
自动释放动态分配的组件。
完全使用了 C++ 的命名空间(namespaces)。
没有宏(MACRO)
Cross-platform: Linux (gcc), FreeBSD (gcc), NetBSD (gcc), Solaris (gcc, Forte), Win32 (gcc, MSVC 2013 or later (gtkmm3), MSVC 2017 or later (gtkmm4)), MacOS X (gcc), others
自由免费的软件,无论是开发开源软件还是闭源软件,都是免费的。

安装gtkmm4

$ sudo dnf install gtkmm4.0*

hello,world

1、codelite新建项目
在这里插入图片描述
输入代码

#include <gtkmm.h>class HelloWindow : public Gtk::Window
{
public:HelloWindow();
};HelloWindow::HelloWindow()
{set_title("hello,world");set_default_size(200, 200);
}int main(int argc, char* argv[])
{auto app = Gtk::Application::create("HelloGtkMN");return app->make_window_and_run<HelloWindow>(argc, argv);
}

命令行编译运行

$ g++ main.cpp  -o simple `pkg-config --cflags --libs gtkmm-4.0` -std=c++17
$ ./simple

必须用反引号括住pkg配置调用。反引号使shell在它们内部执行命令,并将命令的输出作为命令行的一部分。

在这里插入图片描述

codelite配置

在这里插入图片描述在这里插入图片描述

代码解释

所有gtkmm程序必须包含某些gtkmm标头;gtkmm.h包括整个gtkmm套件。

#include <gtkmm.h>

定义HelloWindow类。

class HelloWindow : public Gtk::Window
{
public:HelloWindow();
};

它的默认构造函数设置窗口的标题和默认(初始)大小。

HelloWindow::HelloWindow()
{set_title("hello,world");set_default_size(200, 200);
}

创建Gtk::Application对象,存储在Glib::RefPtr智能指针中。这在所有gtkmm应用程序中都需要。此对象的create()方法初始化gtkmm。

int main(int argc, char* argv[])
{auto app = Gtk::Application::create("HelloGtkMN");return app->make_window_and_run<HelloWindow>(argc, argv);
}

最后一行创建并显示一个窗口,并进入gtkmm主处理循环,该循环将在窗口关闭时完成。然后,main()函数将返回相应的成功或错误代码。当调用make_window_and_run()时,可以检查在命令行上传递给应用程序的argc和argv参数,但这个简单的应用程序不使用这些参数。

http://www.lryc.cn/news/27973.html

相关文章:

  • 选课系统的设计与实现
  • 关于安卓的一些残缺笔记
  • MySQL 中的锁有哪些类型,MySQL 中加锁的原则
  • Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作
  • 2023最新版本RabbitMQ下载安装教程
  • 如何使用码匠连接 Elasticsearch
  • jmeter学习笔记二(jmeter函数与后置处理器)
  • 【独家】华为OD机试提供C语言题解 - 子序列长度
  • Java之注解
  • 【C++】string
  • JVM详解——执行引擎
  • python学习——【第二弹】
  • 242. 有效的字母异位词 349. 两个数组的交集
  • web网页设计——JavaScript一些语法
  • php宝塔搭建部署实战CSM会议室预约系统源码
  • 嵌入式知识点-SPI通讯
  • C#教程--01 简介
  • 【java基础】一篇文章彻底搞懂lambda表达式
  • 通用SQL查询分析器
  • 机器学习100天(三十八):038 朴素贝斯-处理离散数据
  • 【3.3】指针、二分、SSM项目
  • buu [INSHack2017]rsa16m 1
  • 【数据结构起航】:衡量算法的好坏--时间空间复杂度
  • 动手学深度学习【1】——线性回归
  • Html 相关知识
  • 【冲刺蓝桥杯的最后30天】day1
  • c++泛型编程与模板-01函数模板
  • Golang http请求忘记调用resp.Body.Close()而导致的协程泄漏问题(含面试常见协程泄漏相关测试题)
  • 进程信号生命周期详解
  • 2023-03-03干活小计