本文介绍: glade生成的xml格式不被gtkmm4支持, 需要作修改。
文章目录
前言
- 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文件
然后
m_refBuilder->add_from_file(“K:CPlusPluscgccXml_UI.xml”);
代替上面的add_from_string.
原文地址:https://blog.csdn.net/Computer_Tech/article/details/135970006
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_65339.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。