设计有特色的网站,百度软件下载安装,门户网站平台建设情况,做煤层气的网站文章目录 前言Cambalache检查Xml.cpp文件如何写才能显示UI首先creat获取ui里的对象显示 前言
新手刚刚使用时的笔记
Cambalache检查Xml
窗口右键inspect UI Definition切换到Xml视图, 可以全选复制粘贴到你的ui文件里, Cambalache 只能保存为.cmb工程文件, 导出也不知道导出… 文章目录 前言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::RefPtrGtk::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_widgetGtk::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_runExampleWindow(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::RefPtrGtk::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_widgetGtk::Window(mainWindow);
my_app-add_window(*mainWinodw);
mainWinodw-set_visible(true);可以完全用ui里的主窗口