gtkmm xml ui 例子(from string)

Android 布局:使用 XML 语言设计 UI,掌握布局组件 Android UI 设计的核心在于布局,而 XML 语言是定义 Android 布局的标准方式。本教程将带你深入了解 Android 布局的奥秘,从基础知识到实战案例,助你掌握布局组件的使用方法,创建出精美的 UI。Android 布局使用 XML 文件定义,每个 XML 文件代表一个视图 (View) 或布局 (Layout) 组件。布局是 Android UI 设计的基础,掌握布局组件和属性的使用,能够有效地构建出功能完善、界面美观的应用程序。 阅读详情

前言

  • glade生成的xml格式不被gtkmm4支持, 需要作修改

来看一个从字符串中生成UI的例子

  • #include <gtkmm/application.h>
    #include <gtkmm.h>
    #include <iostream>
    using namespace std;
    
    class ExampleWindow : public Gtk::Window
    {
    public:
        ExampleWindow();
        virtual ~ExampleWindow() {};
        void on_action_file_new()
        {
            cout << "New" << endl;
        };
        void on_action_file_open() {};
        void on_action_file_quit() {};
    
        Gtk::Box m_Box;
    };
    ExampleWindow::ExampleWindow()
    {
        auto m_refBuilder = Gtk::Builder::create();
    
        Glib::ustring ui_info =
            "<interface>"
            "  <menu id='menubar'>"
            "    <submenu>"
            "      <attribute name='label' translatable='yes'>_File</attribute>"
            "      <section>"
            "        <item>"
            "          <attribute name='label' translatable='yes'>_New</attribute>"
            "          <attribute name='action'>example.new</attribute>"
            "        </item>"
            "      </section>"
            "      <section>"
            "        <item>"
            "          <attribute name='label' translatable='yes'>_Quit</attribute>"
            "          <attribute name='action'>example.quit</attribute>"
            "        </item>"
            "      </section>"
            "    </submenu>"
            "    <submenu>"
            "      <attribute name='label' translatable='yes'>_Edit</attribute>"
            "      <item>"
            "        <attribute name='label' translatable='yes'>_Copy</attribute>"
            "        <attribute name='action'>example.copy</attribute>"
            "      </item>"
            "      <item>"
            "        <attribute name='label' translatable='yes'>_Paste</attribute>"
            "        <attribute name='action'>example.paste</attribute>"
            "      </item>"
            "    </submenu>"
            "  </menu>"
            "</interface>";
        //绑定行动的对应动作 实际绑定
        auto m_refActionGroup = Gio::SimpleActionGroup::create();
        m_refActionGroup->add_action("new", sigc::mem_fun(*this, &ExampleWindow::on_action_file_new));
        m_refActionGroup->add_action("open", sigc::mem_fun(*this, &ExampleWindow::on_action_file_open));
        m_refActionGroup->add_action("quit", sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit));
        insert_action_group("example", m_refActionGroup);//行动组example 实体诞生
    
        m_refBuilder->add_from_string(ui_info);
        //m_refBuilder->add_from_file("K:\\CPlusPlus\\cgcc\\Xml_UI.xml");
    
        auto gmenu = m_refBuilder->get_object<Gio::Menu>("menubar");
        auto pMenuBar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);
        m_Box.append(*pMenuBar);
        set_child(m_Box);
    
        pMenuBar->set_visible(true);
        m_Box.set_visible(true);
    }
    int main(int argc, char* argv[])
    {
        auto app = Gtk::Application::create("org.gtkmm.example");
        //app快捷键 键位设置对应行动 预先设置
        app->set_accel_for_action("example.new", "<Primary>n");//表示Ctrl+N
        app->set_accel_for_action("example.quit", "<Primary>q");//表示Ctrl+Q
        app->set_accel_for_action("example.copy", "<Primary>c");//表示Ctrl+C
        app->set_accel_for_action("example.paste", "<Primary>v");//表示Ctrl+V
        //Shows the window and returns when it is closed.
        return app->make_window_and_run<ExampleWindow>(argc, argv);
    }
    
    可以把那些字符串放入一个xml文件
    image
    然后
    m_refBuilder->add_from_file(“K:\CPlusPlus\cgcc\Xml_UI.xml”);
    代替上面的add_from_string.
C和C++的面向对象专题(9)——Gtkmm的最佳实践 在跨平台的gui开发中,Qt一直是非常受欢迎的GUI开发框架,但Qt一个是依赖反射,需要特殊的预处理步骤,一个是库太过庞大,这就造成了一些不便的地方。今天介绍给大家的是Gtk库的C++绑定,Gtkmm,一个方便的跨平台GUI开发框架。 由于是C++的封装,GTK不再那么的难以使用,变得简洁优雅,而且效率非常高,编译也较QT快许多。 阅读详情

相关推荐

Linux下的Gtkmm编程实验

本文将介绍一些在Linux下使用Gtkmm进行编程的实验,并提供相应的源代码。在开始Gtkmm编程之前,我们需要确保在Linux系统中安装了Gtkmm库。通过这些实验,你可以开始在Linux下使用Gtkmm进行GUI编程。Gtkmm提供了丰富的功能和灵活的布局管理器,使得开发用户友好的应用程序变得更加简单和方便。编译和运行上述代码,将创建一个带有一个按钮的窗口。编译和运行上述代码,将创建一个带有两个按钮的窗口,这些按钮将按照网格布局排列。编译和运行上述代码,将创建一个大小为200x200的空白窗口。

LogicGuruX的博客 296

Android布局和控件:创建用户界面的XML布局文件和常用UI控件详解

XML布局文件是Android应用中用于定义用户界面布局的文件。它使用一种层次结构的方式描述了界面中各个元素的位置和关系。以下是一个简单的XML布局文件示例:

Dakaring的专栏 4907

gtk3.0入门看这一篇就够(十万字总结+源代码)

GTK(GIMP Toolkit)是一个用于创建图形用户界面(GUI)的跨平台工具包,主要用于Linux环境。GTK 3.0 是该工具包的一个版本,提供了一系列用于构建现代化、用户友好的应用程序界面的功能。

啊渊的专栏 3736

Android开发系列8——纯代码+XML混编UI界面

前言   Android应用的UI组件大多数都在Android.widget包及其子包、Android.view包及其子包中。Android应用的所有UI组件都继承View类,View组件类似IOS中的UIView,代表一个白色的显示UI区域。   View类还要一个重要的子类:ViewGroup(容器类)。   Android所有的UI组件底层都是继承于View,一些组件继承于ViewGroup...

Future_One的专栏 1362

基于XML的SharpUI界面设计实战指南

在现代用户界面设计中,简洁、直观和高效是至关重要的。正是以这些原则为核心,旨在提供一个直观的设计和开发环境,使设计师和开发者能够轻松创建一致且响应迅速的用户界面。融合了组件化设计的思想,强化了模块化和可重用性,极大地提高了开发效率和界面维护性。该工具支持从概念草图到最终用户界面的整个工作流程,支持快速迭代和原型设计,使得设计团队能够以最小的努力测试和验证他们的设计假设。通过对设计理念的深入分析和实践,

weixin_31720909的博客 688

XML项目实践:从基础到UI交互与数据操作

是开始标签,

weixin_28968525的博客 423

tkinter-TinUI用xml编写界面-超详细

tkinter-TinUI使用xml布局,超详细讲解

KILIN的博客 5089

C++基于XML的SKINUI界面开发实战

在软件开发的世界中,用户界面(UI)是与用户交互的直接渠道,它对于创造一个引人入胜、易于使用的应用程序至关重要。SKINUI开发包应运而生,旨在简化开发流程,为开发者提供一套丰富的控件和工具,以打造统一且美观的用户界面。本章将介绍SKINUI开发包的基础知识,包括其设计理念、功能特点及在实际开发中的应用场景。SKINUI开发包是专为需要跨平台兼容性的应用设计的,它支持多种操作系统和设备,无论是桌面环境还是移动平台。

weixin_42510243的博客 1266

二十一、Gtk4-Template XML and composite widget

前一节中的tfe程序不太好,因为很多东西都塞到了tfeapplication .c中。以及tfeapplication .c中的许多静态变量。文件tfeapplication.c应该被分成几个文件。首选项对话框由ui文件定义。它有GtkBox, GtkLabel和GtkFontButton。这样的小部件可以定义为复合小部件。子对象下一小节将展示如何构建首选项对话框。

Creationyang的博客 912

uniapp实现app版本发现新版本后,自动更新

app实现自动更新

oldolder的博客 1283

Qt OpenGL 3D 点云数据显示

在Qt中使用OpenGL显示3D点云数据是一个常见的需求,特别是在计算机视觉、机器人学和三维重建等领域。下面我将介绍一个基本的实现方案。

深之JohnChen的专栏 1238

gtkmm库之动作系统详解

善用便捷的add_action重载:对于无参数、布尔状态、字符串状态等常见类型的动作,优先使用等便捷方法,它们能帮你省去手动创建的样板代码。区分activate和:对于无状态的动作,连接到activate信号。对于有状态的动作(如开关、单选),必须连接到信号,并在回调中处理新状态,然后调用更新动作状态。切勿在activate中处理状态变化。利用前缀实现作用域:通过为动作组添加前缀(如"app."或"win."),是实现动作作用域分离的标准模式。这可以清晰地表明一个动作是属于整个应用程序还是某个特定窗口。

zhaominyong的专栏 466

关于Selenium3在MicrosoftEdge浏览器中出现的问题

前言 最近在做web自动化测试,所用环境是java+selenium3.141.59+MicrosoftEdge(Chromium)浏览器。 在调试的过程中,出现了很多问题。比如selenium3在Edge浏览器中远程调用中,不支持addArguments方法等 问题 1.Edge浏览器弹窗问题 在测试过程中,会出现弹出窗提示 ...

zhucheng1994的博客 2191

UI开发实操-编写xml文件

编辑xml文件,常用于设置固定的文本,静态设置在代码中设置,常用于设置服务器下发的数据,动态设置。

weixin_62416090的博客 836

c# 如何使用S7NET 读取汇川H5U的数据

本文介绍了两种使用C#读取汇川H5U PLC数据的方法。第一种通过ModbusTCP协议(推荐),使用NModbus库实现,步骤包括配置PLC的Modbus服务器功能、安装库及编写读取保持寄存器的代码。第二种针对兼容西门子S7协议的型号,使用S7NetPlus库直接读取。文章强调需注意地址映射关系、协议配置及网络设置,并建议优先采用ModbusTCP方案以确保稳定性。两种方法均提供了完整的代码示例,帮助开发者快速实现在C#环境下与汇川H5U PLC的通信。

StevenChen的博客 456

YOLO项目部署:从Python脚本到Docker容器的企业级交付全流程

YOLO模型企业级Docker部署方案 核心挑战 环境一致性:解决"本地能跑,服务器崩掉"问题 可扩展性:支持单实例到多实例扩展 稳定性:确保99.9%可用性 部署流程 项目改造:模块化代码,分离配置 Docker镜像:支持CPU/GPU环境 API服务:封装推理逻辑 监控告警:实现自动化运维 技术方案 需求 解决方案 环境一致性 Docker镜像+依赖冻结 可扩展性 K8s+负载均衡 稳定性 健康检查+自动重启 项目结构 模块化代码组织 外部化配置管理 精确依赖版本控制 摘要重点:通过

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1229

GTK XML语法解析器开发

篇一、开发前言 学习GTK+,原来的目的是能够锻炼Linux C的开发能力。因为工作中很少能用到C,所以希望借此机会实战中学习C。 在使用GTK+设计界面时,需要编写大量重复且有规律可循的代码,让开发工作中的大量时间耗费在界面布局中。 加上之前研究过Android界面设计,感觉非常方便,用通俗易懂的XML来描述界面,并解析渲染成最终的界面,所以想到了开发这个工具。 反正最终目的,只是为了能...

duoerbasilu 387

Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程

本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的元器件创建IBIS模型的方法。

fydar的博客 2168

学习Gtkmm系列之五

程序客户区的创建可谓仁者见仁,智者见智了。比较常用的就是使用hpaned控件来完成,左边为sidepane,右边位mainpane,这样将来可以根据实际应用的需要来采用不同的控件。我这里使用两个Button来演示。该控件采用属性来与菜单中的选项的使能状态一一对应。由于不太熟悉gtkmm,其资料也比较少,用了点时间来研究属性的用法(gtkmm源码都是对gtk的封装,不太适合)。 头文件代码如下:(

iltgcl的专栏 1406

2小时用Trae搭建全功能CMS系统

在前文中,我们使用Trae从零搭建了一个用户文档站点,仅用不到2小时就实现了用户注册登录和文档的增删改查功能,且无需编写任何代码。本节我们将在此基础上,构建一个CMS后台管理系统,包含用户管理和文档管理两大功能模块。

2501_92019101的博客 540

提示词工程中的上下文隔离

已经进入context的prompt是没有办法让大模型真正的忘记的,但是可以通过prompt技巧强约束模型的后续推理中“不再使用、不再提及、不再引用”某部分提示词,这其实是一种行为抑制(behavior suppression),并不是删除。

Criss@陈磊 233

利用XML进行GUI设计与运行时显示------基于GTK+/Gtkmm的Glade/libglade/libglademm

Glade是面向GTK+/Gtkmm的图形界面开发工具。它向用户提供可视化的界面设计环境,并以XML文件的格式对界面进行保存。Glade提供了一个类库,在程序运行的时候,它可以通过读取XML文件而生成相应的程序界面,从而达到了程序代码逻辑与用户界面的完全分离。对于GTK+来说,这个类库就是libglade,对于Gtkmm来说,这个类库就是libglademm。另一方面,提供了利用XML文件生成代码

kaya的专栏 3243

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

gtk3.0学习笔记4-构建用户界面

构建用户界面当构建一个更复杂的用户界面时,几十个或几百个小部件,在C代码中进行所有的安装工作都是麻烦的,而且改变是不可能的。值得庆幸的是,GTK +通过使用可由GtkBuilder类解析的XML格式的UI描述来支持用户界面布局与业务逻辑的分离。建立一个test.c文件,代码如下#include <gtk/gtk.h>static void print_hello (GtkWidget *widget

柠檬说葡萄你好酸 1321

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Golang Gtk+3教程:GtkBuilder使用XML构建UI

在这节我将介绍GtkBuilder,其使我们可以从一个描述界面的xml文件构建UI。而这个文件我们可以使用Glade生成,这会极大的方便我们编辑用户界面。这节我们会使用到这么一个XML文件,名字为Builder.ui(可以在本文后面看到,请创建并放在项目下)。习惯上,我们使用.ui作为扩展名。 示例: package main import ( "github.com/gotk3/got...

weixin_30949361的博客 582

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java 通过xml控制ui_3.1.1 使用XML布局文件控制UI界面

3.1.1 使用XML布局文件控制UI界面在Android中,提供了一种非常简单、方便的方法用于控制UI界面。该方法采用XML文件来进行界面布局,从而将布局界面的代码和逻辑控制的Java代码分离开来,使用程序的结构更加清晰、明了。使用XML布局文件控制UI界面可以分为以下两个关键步骤。(1)在Android应用的res/layout目录下编写XML布局文件,可以是任何符合Java命名规则的文件...

weixin_39646018的博客 875

GtkBuilder界面开发

最初的想法不能太复杂,但也不能太简单,因为那样没有含量,学不到什么。这次开发的界面至少应该这样:1、有一个主窗体跟若干构件;2、构件之间能够互相交互;3、最好能够明白GtkBuilder可能是怎样实现界面定制的。最后确定的界面大概如图1:图1 整体界面点击一下SayHello按钮,文本显示”Hello, World”,点击一下Goodbye按钮退出程序。根据之前对GTK+信号...

weixin_34363171的博客 407
上一篇: Miscellaneous Widgets
下一篇: windows中打包gtk的问题记录
Computer_Tech
博客等级 码龄3年 573粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值