- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因为我正在编写一个在面对其他配置时表现完全不同的“通用”应用程序,所以我被迫显示 gtk 窗口,即使我在启动时还不知道它们。可能还需要同时显示多个窗口(不是模态对话框,而是独立窗口)。但是,如果可以在启动时简单地启动一个 gtk 事件循环,那就太好了。
是否有可能在循环启动后将窗口添加到循环中?虽然我发现 Gtk::Application
类似乎完全支持缩进行为,但我只能使用 Gtk::Main
类。
最佳答案
只允许有一个 Gtk::Main 对象。窗口小部件应在运行主事件循环的同一线程中创建。要解决此限制,您需要开发一种方法将窗口创建命令传递给 gtk 线程。
最简单的方法是使用 Glib::Dispatcher
struct WindowBuilder {
/**/
Glib::Dispatcher* signal_create;
void create_window() {
//From main thread...
signal_create->emit();
}
}
void create_mainWnd() {
new Ui::MainWnd();
}
//From Gtk thread...
builder->signal_create->connect(sigc::ptr_fun(create_mainWnd));
Gtk::Main::run();
Glib::Dispatcher 不接受任何参数,所以下一步是弄清楚如何在线程之间传递参数。
对于不同类型的窗口,您可以使用不同的调度器。
boost::asio::io_service 可以帮助您传递消息。
while(!exit) {
io_service.reset();
io_service.poll();
while(Gtk::Main::events_pending())
Gtk::Main::iteration();
Sleep(0);
}
关于c++ - Gtkmm:稍后添加窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10885584/
我正在编写一个插件,有一个ajax调用向用户显示数据。 如果用户想在ajax成功时添加一些js?他可以从他的 js 脚本中做到这一点吗,比如定位这个 ajax 成功事件。 例如: $(documen
我有 html 代码,例如 - x 最初插入 div 'insert_calendar_eda_form'。 Javascript代码 calendar_eda_add
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我已经使用命令 sudo start myservice 启动了一个 upstart 服务。我想要一种方法,以便稍后我(或任何人)可以检查该服务是否已启动并正在运行。检查它的命令是什么? 最佳答案 找
我是一名优秀的程序员,十分优秀!