【发布时间】:2012-01-12 15:16:32
【问题描述】:
在我们的项目中,我们使用gtkmm,并且我们有几个扩展Gtk::Window 的类以显示我们的图形界面。
我现在发现了是什么调用产生了这种行为(在上一版本中描述。现在问题略有改变。)
我们正在显示一个窗口,就像一个魅力。
然后,我们有一个显示各种状态消息的窗口。我们称之为MessageWindow。它有一个方法setMessage(Glib::ustring msg),它简单地调用标签的set_text()。
经过一些处理后,我们再次隐藏此窗口,现在显示一个工具栏。只是又一个简单的窗口,没有什么疯狂的。
适用于所有窗口:主线程在窗口上调用show() 并创建一个调用Gtk::Main::run() 的新线程(不带参数)。
到现在为止应该是这样。
问题从这里开始:主线程现在想调用MessageWindow::setMessage("any string")。 a) 如果我调用此方法,消息窗口的反应完全正确。 但是之后,工具栏窗口显示为空。 b) 如果我不调用它,消息窗口不会改变标签(绝对清楚),工具栏窗口按应有的显示。
好像窗户互相弄乱了。
现在的问题:
如果我的 gui 线程在 Gtk::Main::run() 中阻塞,我现在如何更改标签的文本?
我们正在使用gtkmm-2.4(不,我们无法升级)
感谢任何帮助。
【问题讨论】: