0

我有一个gtkmm3应用程序,我计划在其中使用派生的类Gtk::Assistant来执行一些用户配置。由于 Gtk::Assistant源自Gtk::Window(而不是Gtk::Dialog),因此run()我无法调用以显示助手。

正如好书所说,我用来Gtk::Application::run(window)调出主应用程序窗口,但我不知道如何在gtkmm3应用程序中从我的主窗口显示第二个窗口。在gtkmm2.4 中,我很确定 aGtk::Main::run(assistant)会完成这项工作。我觉得完全愚蠢,即使在浏览了gtk-demo源代码之后我也无法弄清楚这一点。一些帮助将不胜感激。

4

1 回答 1

0

您可以show()像调用任何其他窗口一样简单地调用 。例如:

#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);
}
于 2021-07-09T18:44:13.123 回答