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

gtkmm 与 Cambalache 与 Gtk::Builder (新手向)_

文章目录

  • 前言
  • Cambalache检查Xml
  • .cpp文件如何写才能显示UI
    • 首先creat
    • 获取ui里的对象
    • 显示

前言

  • 新手刚刚使用时的笔记

Cambalache检查Xml

  • 窗口右键inspect UI Definition切换到Xml视图, 可以全选复制粘贴到你的ui文件里, Cambalache 只能保存为.cmb工程文件, 导出也不知道导出到哪

.cpp文件如何写才能显示UI

  • 首先creat

    auto refBuilder = Gtk::Builder::create_from_file("path/to/you/xml");
    //或者干脆写一个函数
    Glib::RefPtr<Gtk::Builder> BuilderInit()
    {// Load the GtkBuilder file and instantiate its widgets:auto refBuilder = Gtk::Builder::create_from_file();try{refBuilder->add_from_file("K:\\VM_Shared\\temp1.ui");}catch (const Glib::FileError& ex){std::cerr << "FileError: " << ex.what() << std::endl;return nullptr;}catch (const Glib::MarkupError& ex){std::cerr << "MarkupError: " << ex.what() << std::endl;return nullptr;}catch (const Gtk::BuilderError& ex){std::cerr << "BuilderError: " << ex.what() << std::endl;return nullptr;}return refBuilder;
    }
    
  • 获取ui里的对象

    //这里的mainWindow 在Cambalache的 属性 Object id 条目中指定
    refBuilder->get_widget<Gtk::Window>("mainWindow");
    //获取的是一个实体的指针, 已经存在 并且具有在ui设计器里的父子关系
    
    可以看看这个例子
    https://blog.csdn.net/Computer_Tech/article/details/135970006
  • 显示

    需要获取最上层的对象然后 set_child(最上层的对象)
    或者app->add_window(window) 这是两种方法
    • 第一种
    //官网例子常见的
    auto app = Gtk::Application::create("org.gtkmm.example");
    app->make_window_and_run<ExampleWindow>(argc, argv);
    
    这种就在ExampleWindow的构造函数中set_child(最上层的对象)
    这个对象不能是GtkWindow 如果是, 将报错:

    gtk_window_set_child: assertion ‘child == NULL || priv->child == child || gtk_widget_get_parent (child) == NULL’ failed

    • 第二种
    #include "test.h"
    //在test里面用extern声明 在这里先提前定义为nullptr
    Glib::RefPtr<Gtk::Application> my_app = nullptr;
    void on_app_activate()
    {ExampleWindow init;
    }
    int main(int argc, char* argv[])
    {my_app = Gtk::Application::create("org.gtkmm.example");my_app->signal_activate().connect([] (){on_app_activate();});return my_app->run(argc, argv);
    }
    
    在ExampleWindow的构造函数中
    mainWinodw = refBuilder->get_widget<Gtk::Window>("mainWindow");
    my_app->add_window(*mainWinodw);
    mainWinodw->set_visible(true);
    
    可以完全用ui里的主窗口
http://www.lryc.cn/news/296068.html

相关文章:

  • uniapp小程序端使用计算属性动态绑定style样式踩坑
  • 计算机网络概念、组成、功能和分类
  • MyBatisPlus基础操作之增删改查
  • 视频处理学习笔记1:YUYV422、NV12和h264
  • CTFshow web(命令执行29-36)
  • PyTorch深度学习实战(23)——从零开始实现SSD目标检测
  • 【附代码】NumPy加速库NumExpr(大数据)
  • 4、安全开发-Python-蓝队项目流量攻击分析文件动态监控图片隐写技术
  • MySQL 日志管理
  • Python CSV文件读取和写入
  • 如何使用C#调用LabVIEW算法
  • 调用百度文心AI作画API实现中文-图像跨模态生成
  • JAVA SpringBoot中使用redis的事务
  • docker部署自己的网站wordpress
  • 基于ISO13400 (DoIP) 实现车辆刷写
  • Chrome 沙箱逃逸 -- Plaid CTF 2020 mojo
  • 汇编笔记 01
  • C语言:矩阵中的最小元素
  • 【原创】MQTT开发笔记(四)- 压力测试
  • vue 引入 百度地图API 和 路书
  • 【QT+QGIS跨平台编译】之二十六:【SpatialIndex+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • SQL在云计算中的新角色:重新定义数据分析
  • 云安全的基本概念(基本目标与指导方针)
  • 猫头虎分享已解决Bug || docker: Error response from daemon: network not found
  • 《幻兽帕鲁》攻略:0基础入门及游戏基础操作 幻兽帕鲁基础设施 幻兽帕鲁基础攻击力 Mac苹果电脑玩幻兽帕鲁 幻兽帕鲁加班加点
  • JDK版本如何在IDEA中切换
  • 如何做零售企业满意度调查
  • platform tree架构下i2c应用实例(HS3003)
  • Mongodb聚合:$planCacheStats
  • 8个简约精美的WordPress外贸网站主题模板