在 gtkmm3 中使用 Gtk::Assistant
Using Gtk::Assistant in gtkmm3
我有一个 gtkmm3 应用程序,我计划使用从 Gtk::Assistant
派生的 class 来执行一些用户配置。由于 Gtk::Assistant
派生自 Gtk::Window
(而非 Gtk::Dialog
),因此我无法调用 run()
来显示助手。
正如这本好书所说,我使用 Gtk::Application::run(window)
来启动主应用程序 window,但我不知道如何从我的主应用程序 [=] 中显示第二个 window 31=] 在 gtkmm3 应用程序中。在 gtkmm2.4 中,我很确定 Gtk::Main::run(assistant)
可以完成这项工作。我觉得完全愚蠢,即使在阅读 gtk-demo 源代码后我也无法弄清楚这一点。一些帮助将不胜感激。
您可以简单地调用 show()
,就像调用任何其他 window 一样。例如:
#include <gtkmm.h>
class MainWindow : public Gtk::Window
{
public:
MainWindow()
{
m_button.set_label("Click to show assistant...");
m_button.signal_clicked().connect([this](){ShowAssistant();});
add(m_button);
}
private:
void ShowAssistant()
{
m_assistant.show();
}
Gtk::Button m_button;
Gtk::Assistant m_assistant;
};
int main(int argc, char *argv[])
{
auto app = Gtk::Application::create(argc, argv, "gtkmm.example");
MainWindow window;
window.set_default_size(200, 200);
window.show_all();
return app->run(window);
}
我有一个 gtkmm3 应用程序,我计划使用从 Gtk::Assistant
派生的 class 来执行一些用户配置。由于 Gtk::Assistant
派生自 Gtk::Window
(而非 Gtk::Dialog
),因此我无法调用 run()
来显示助手。
正如这本好书所说,我使用 Gtk::Application::run(window)
来启动主应用程序 window,但我不知道如何从我的主应用程序 [=] 中显示第二个 window 31=] 在 gtkmm3 应用程序中。在 gtkmm2.4 中,我很确定 Gtk::Main::run(assistant)
可以完成这项工作。我觉得完全愚蠢,即使在阅读 gtk-demo 源代码后我也无法弄清楚这一点。一些帮助将不胜感激。
您可以简单地调用 show()
,就像调用任何其他 window 一样。例如:
#include <gtkmm.h>
class MainWindow : public Gtk::Window
{
public:
MainWindow()
{
m_button.set_label("Click to show assistant...");
m_button.signal_clicked().connect([this](){ShowAssistant();});
add(m_button);
}
private:
void ShowAssistant()
{
m_assistant.show();
}
Gtk::Button m_button;
Gtk::Assistant m_assistant;
};
int main(int argc, char *argv[])
{
auto app = Gtk::Application::create(argc, argv, "gtkmm.example");
MainWindow window;
window.set_default_size(200, 200);
window.show_all();
return app->run(window);
}