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

gtkmm xml ui 例子(from string)

文章目录

  • 前言
  • 来看一个从字符串中生成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+Napp->set_accel_for_action("example.quit", "<Primary>q");//表示Ctrl+Qapp->set_accel_for_action("example.copy", "<Primary>c");//表示Ctrl+Capp->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.
http://www.lryc.cn/news/292261.html

相关文章:

  • 第2章 Linux 中执行命令
  • python3.8 安装缺少ssl、_ctypes模块解决办法
  • 鸿蒙开发-UI-页面路由
  • 【Git】多个托管平台Git账户配置
  • vue2 图片懒加载vue-lazyload 插件
  • element-ui button 组件源码分享
  • Spring实现事务(一)
  • 获取依赖aar包的两种方式-在android studio里引入 如:glide
  • vue3-深入组件-依赖注入
  • 【项目日记(七)】第三层: 页缓存的具体实现(上)
  • 深入解剖指针篇(2)
  • 【知识点】Java常用
  • MySQL篇—迁移数据目录到新的本地路径
  • 【FPGA】高云FPGA之IP核的使用->PLL锁相环
  • 程控设备和电脑通信的总线和协议选择
  • 鸿蒙开发-UI-组件导航-Navigation
  • Codeforces Round 922 (Div. 2)(A~D)补题
  • Seata下载与配置、启动
  • 什么是TCP三次握手、四次挥手?
  • C++程序在开机自启和定时器执行时遇到的问题和解决方法
  • R17 extended DRX(eDRX)
  • Debezium发布历史102
  • 探索自然语言处理在改善搜索引擎、语音助手和机器翻译中的应用
  • echarts:获取省、市、区/县、镇的地图数据
  • Java_简单模拟实现ArrayList_学习ArrayList
  • 动手学深度学习(一)深度学习介绍2
  • vmware网络配置,VMware的三种网络模式详解与配置
  • 【Ubuntu】安装hbase
  • ubuntu16.04环境轻松安装和应用opencv4.9.0(基于源码编译)
  • FastBee开源物联网平台2.0开源版发布啦!!!