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参数,但这个简单的应用程序不使用这些参数。
相关文章:
Linux应用GUI开发C++ 之gtkmm4(1)
目录概述GTKgtkmm安装gtkmm4hello,worldcodelite配置代码解释概述 GTK GTK是一个小部件工具包。GTK创建的每个用户界面都由小部件组成。这是在C语言中使用GObject实现的,GObject是一个面向对象的C语言框架。窗口小部件是主容器。然后通过向窗口中添加按钮、下拉菜…...
选课系统的设计与实现
技术:Java等摘要:目前国内各高校的规模越来越大,进而造成教师教学管理等工作量日趋加大。然而,现代教育的信息化、网络化已经成为教育发展的一个重要方向,同时也为解决高校教学管理效率低下的现状,使管理突…...
关于安卓的一些残缺笔记
安卓笔记Android应用项目的开发过程Android的调试Android项目文档结构Intent的显式/隐式调用Activity的生命周期1个Activity界面涉及到生命周期的情况2个Activity界面涉及到生命周期的情况Android布局的理论讲解Activity界面布局ContentProvider是如何实现数据共享Android整体架…...
MySQL 中的锁有哪些类型,MySQL 中加锁的原则
锁的类型MySQL 找那个根据加锁的范围,大致可以分成全局锁,表级锁和行级锁。全局锁全局锁,就是对整个数据库加锁。加锁flush tables with read lock解锁unlock tables全局锁会让整个库处于只读状态,之后所有的更新操作都会被阻塞&a…...
Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作
场景 Sqlite数据库 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。 它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不…...
2023最新版本RabbitMQ下载安装教程
一、RabbitMQ简介 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。主要用于在进程、应用程序和服务器之间交换数据,可以通过插件支持进行扩展,支持许多协议,并提供高性能、可靠性、集群和高可用队列。 AMQP :Advanced Me…...
如何使用码匠连接 Elasticsearch
目录 在码匠中集成 Elasticsearch 在码匠中使用 Elasticsearch 关于码匠 Elasticsearch 是一个开源的分布式搜索和分析引擎,常用于处理大规模数据集的搜索、实时数据分析和数据挖掘任务。它支持多种数据源,包括关系型数据库(如 MySQL、Pos…...
jmeter学习笔记二(jmeter函数与后置处理器)
Jmeter重要的函数 ${__counter(,)} 计数器 ${__counter(TRUE,)} 默认加1; TRUE,每个用户有自己的计数器;FALSE,使用全局计数器 计数器元件,可以设置起始值,间隔值,最大值。运行结果超过最大值时&a…...
【独家】华为OD机试提供C语言题解 - 子序列长度
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明子序…...
Java之注解
注解1.1 注解的概念1.2 内置注解1.3 元注解1.4 自定义注解1.1 注解的概念 Annotation 是从JDK5.0 开始引入的新技术 Annotation的作用: 不是程序本身,可以对程序做出解释(这一点和注释comment没什么区别)可以被其他程序ÿ…...
【C++】string
【C修炼秘籍】string 目录 【C修炼秘籍】string 文章目录 前言 一、标准库里的string 二、string常用接口功能简介(具体使用和底层转到模拟实现) 1、string类的常见构造函数 2、string类对象的容量操作 3、string类对象的访问及遍历操作 4、 string类对象…...
JVM详解——执行引擎
如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:耶瞳空间 一:执行引擎介绍 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和…...
python学习——【第二弹】
前言 上一篇文章 python学习——【第一弹】给大家介绍了python中的基本数据类型等,这篇文章接着学习python中的运算符的相关内容。 运算符 python中的运算符主要有:算术运算符,赋值运算符,比较运算符,布尔运算符以及…...
242. 有效的字母异位词 349. 两个数组的交集
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意: 若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat…...
web网页设计——JavaScript一些语法
1、事件监听 语法: <1> 元素对象.addEventListener(‘事件类型’,要执行的函数) 三要素:(1)、事件源 (2)事件类型 (3)执行的函数 <2>元素对象.on事件类型 …...
php宝塔搭建部署实战CSM会议室预约系统源码
大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套基于fastadmin开发的CSM会议室预约系统的源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码࿰…...
嵌入式知识点-SPI通讯
该文原自 : 正点原子 01 SPI概述 SPI (Serial Peripheralinterface),顾名思义就是串行外围设备接口。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同…...
C#教程--01 简介
简介 C# 是一个简单的、现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的。 C#的特性 现代的、通用的编程语言。 面向对象。 面向组件。 容易学习。 结构化语言。 它产生高效率的程序。 它可以在多种计算机平台上编译。 .Net 框架的一部分。 C#强大的编程…...
【java基础】一篇文章彻底搞懂lambda表达式
文章目录lambda表达式是什么lambda表达式的语法函数式接口初次使用深入理解方法引用 :: 用法快速入门不同形式的::情况1 object::instanceMethod情况2 Class::instanceMethod情况3 Class::staticMethod对于 :: 的一些示例及其注意事项构造器引用变量作用域使用外部变量定义内部…...
通用SQL查询分析器
技术:Java、JSP等摘要:本文主要针对当前很多软件都无法实现跨数据库、跨平台来执行sql语句而用户又仅需做一些基本的增删改查操作的矛盾,设计了一个能够跨平台跨数据库的软件。此软件是一个通用SQL查询分析器,利用java语言本身的跨…...
机器学习100天(三十八):038 朴素贝斯-处理离散数据
《机器学习100天》完整目录:目录 机器学习100天,今天讲的是:朴素贝斯-处理离散数据! 打开 spyder,新建一个 naive_bayes_category.py 脚本。上一节我们引入了一批西瓜样本。并使用朴素贝叶斯公式计算出一个瓜蒂脱落、圆形、青色的西瓜是熟瓜的概率。下面我们来使用 pytho…...
【3.3】指针、二分、SSM项目
二分查找 class Solution {public int search(int[] nums, int target) {int n nums.length;int left 0;int right n - 1;while(left < right){int mid left (right - left) / 2;if(nums[mid] < target){left mid 1;}else if(nums[mid] > target){right mid …...
buu [INSHack2017]rsa16m 1
题目描述: 打开的 rsa_16m 文件 : (在此我只想说神人才找得到 c 的位置) ,这位置是真的难找啊 题目分析: 首先打开 description.md 文件,得到: 翻译下来: 当您需要真正…...
【数据结构起航】:衡量算法的好坏--时间空间复杂度
时间复杂度和空间复杂度 文章目录时间复杂度和空间复杂度1.算法效率1.1算法复杂度1.2复杂度在OJ里的应用2.时间复杂度2.1时间复杂度的概率2.2大O渐进表示法推导大O阶方法:2.3时间复杂度的举例计算3.空间复杂度3.1空间复杂度的举例计算4.复杂度各量级对比1.算法效率 …...
动手学深度学习【1】——线性回归
动手学深度学习网址:动手学深度学习 注:本部分只对基础知识进行简单的介绍并附上完整的代码实现,更多内容可参考上述网址。 简述 需要的准备知识 数学的偏导线性代数 线性模型 回归是能为一个或多个自变量与因变量之间关系建模的一类方…...
Html 相关知识
Html 相关知识 DOM 文档对象模型 (DOM) 是 HTML 和 XML 文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包…...
【冲刺蓝桥杯的最后30天】day1
大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨💻,断更了整整一年,又开始恢复CSDN更新,从今天开始逐渐恢复更新状态,正在备战蓝桥杯的小伙伴可以支持一下哦!…...
c++泛型编程与模板-01函数模板
函数模板的定义 所谓函数模板,实际就是写一个通用函数,返回值和参数的类型都是可变的,用一个特定格式的变量来指定,然后调用此函数的时候,编译器会根据参数的数据类型自动推导出类型,从而达到函数再不同的…...
Golang http请求忘记调用resp.Body.Close()而导致的协程泄漏问题(含面试常见协程泄漏相关测试题)
参考: 知乎:别因为忘记close你的httpclient,造成goroutine泄漏 CSDN:resp.Body.Close() 引发的内存泄漏goroutine个数 先来看几道题,想一想最终的输出结果是多少呢? package mainimport ("fmt"…...
进程信号生命周期详解
信号和信号量半毛钱关系都没有! 每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定 义 #define SIGINT 2 查看信号的机制,如默认处理动作man 7 signal SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理…...
WordPress网站转HTPPS/在线识图
1.树的定义: (1)有且只有一个称为根的节点。 (2)有若干个互不相交的子树,这些子树本身也是一棵树。 eg: 2.通俗的定义: (1)树由节点和边组成。 (2…...
不会编程怎么做网站/抖音搜索优化
当从后台获取到数据后,数据将传入app.js中的各个控制,之后将数据绑定到ion-view当中,index.html作为公用模板显示红色区域的内容。...
石家庄网站建设推广/汕头网站关键词推广
环境:DB: mysql 5.7.xxOS: windows server 2012 r2CPU: E3 1220-V5内存: 4G。数据库配置(基本上是默认配置):join_buffer_size 128Msort_buffer_size 2Mread_rnd_buffer_size 2Minnodb_buffer_pool_size 128M表现:有个表service_log&…...
如何把网站设为正确建设中/应用市场
欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取精品学习资源 程序员技术交流①群:736386324 ,程序员技术交流②群:371394777 nor 随机存储 速率快,内存下(可以块操作) 一般用来…...
idc 网站备案/制作网站软件
#参考资料大型分布式网站架构设计与实践 #感悟:书读百遍,其意自见 #QQ群北京it—推荐–交流:300458205 #群专注内推、大数据、云计算、Java、Android、UI等技术交流,欢迎你的加入。 看的越多,发现会的越少ÿ…...
网站内页seo查询/搜索引擎优化简称
上一篇文章:【AI绘画】我以Midjourney为主学习AI绘画效果咋样?_山楂山楂丸的博客-CSDN博客 目录 前言 一、「Stable Diffusion」 是什么 二、「Stable Diffusion」上手演练 三、竟然还有ChatGPT? 四、「Stable Diffusion」作品展示 五、…...