在 Gtkmm 中打开多个不同的窗口
Open multiple different windows in Gtkmm
>我才刚刚开始学习如何使用 gtkmm,我正在尝试创建一个可以同时打开多个窗口的应用程序(想想,主窗口和控制面板(。
我决定在 Glade 中创建布局,如果这与这个问题有任何关系的话。
我展示两个瓶子的方法或多或少是这样的:
Gtk::Window* main_window = nullptr;
Gtk::Window* servsettings = nullptr;
int main(int argc, char* argv[]) {
auto app = ...
auto builder = ... // these are exluded for brevity
builder->add_from_file("../src/design.glade");
builder->get_widget("main", main_window);
builder->get_widget("servsettings", servsettings);
app->run(*servsettings);
app->run(*main_window);
}
这不是打开两个窗口,而是打开servsettings
,然后在我关闭它时出现段错误。
现在忘记了段错误(我对此完全困惑,(我想我可以看到为什么它只打开servsettings
- 我认为这是因为我正在运行该应用程序,然后该调用仅在窗口死亡时退出?
问题是,我想不出任何其他方法可以做到这一点。我尝试了多线程,但决定最好先在这里问一下。
在任何人建议之前,这个答案对我没有帮助。这是因为他们有一个基于范围的问题。我没有。
使用 gtk::application::add_window(gtk::Window&(。
如果 Gtk::Application 管理的所有窗口都已关闭(隐藏(或从应用程序中删除,则 run(( 调用将返回。
#include <gtkmm.h>
Gtk::Window* window1, *window2;
int main()
{
auto app = Gtk::Application::create();
Gtk::Button button1("Quit"), button2("Quit");
window1 = new Gtk::Window();
window2 = new Gtk::Window();
button1.signal_clicked().connect(sigc::mem_fun(window1, &Gtk::Window::close));
button2.signal_clicked().connect(sigc::mem_fun(window2, &Gtk::Window::close));
window1->set_default_size(200, 200);
window1->add(button1);
window1->show_all();
window2->set_default_size(200, 200);
window2->add(button2);
window2->show_all();
app->signal_startup().connect([&]{
app->add_window(*window2);
});
return app->run(*window1);
}
我找到了答案。对于那些想知道的人,我将两个app->run
替换为:
servsettings->show();
main_window->show();
app->run(*main_window);
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- Gtkmm 窗口为空白,不显示任何小部件或标题
- Gtkmm - 关闭窗口然后显示另一个窗口的正确方法
- 在 Gtkmm 中打开多个不同的窗口
- gtkmm 和多窗口不起作用
- Gtkmm 3/C++,使用按钮而不是窗口关闭程序"X"
- gtkmm - 如何使包含小部件的框展开以填充窗口
- gtkmm在班上以外地关闭GUI窗口
- 带有 gtkmm 派生小部件的空白窗口
- Gtkmm - 固定窗口的位置?
- Gtkmm应用程序在调整窗口大小时在Windows 8.1上崩溃
- 无法在 gtkmm 中向窗口添加多个按钮?
- Gtkmm - 隐藏窗口而不关闭应用程序
- Gtkmm:稍后添加窗口
- gtkmm 2.4 开罗时钟示例在修改为在 HBox 内部而不是主窗口内绘制时不起作用
- Gtkmm 无法在 OSX 上打开应用程序窗口
- gtkmm:窗口内的模态小部件
- 如何将gtkmm窗口设置为在屏幕中央打开
- Gtkmm 3.0如何在框架或窗口之间切换