0


gtkmm xml ui 例子(from string)

文章目录

前言

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

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

  • #include<gtkmm/application.h>#include<gtkmm.h>#include<iostream>usingnamespace std;classExampleWindow:public Gtk::Window{public:ExampleWindow();virtual~ExampleWindow(){};voidon_action_file_new(){ cout <<"New"<< endl;};voidon_action_file_open(){};voidon_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);}intmain(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.
标签: xml ui gtkmm4

本文转载自: https://blog.csdn.net/Computer_Tech/article/details/135970006
版权归原作者 Computer_Tech 所有, 如有侵权,请联系我们删除。

“gtkmm xml ui 例子(from string)”的评论:

还没有评论