• 9869阅读
  • 9回复

问个弱弱的问题,如何在一个对话框中获取另一个对话框的句柄,并向其发送消息? [复制链接]

上一主题 下一主题
离线sht112
 
只看楼主 倒序阅读 楼主  发表于: 2008-06-01
— 本帖被 XChinux 执行加亮操作(2008-06-03) —
我查了版主的FAQ,但没有解答这方面的内容,请高手指点。
谢先
离线sht112
只看该作者 1楼 发表于: 2008-06-01
sign!
怎么没有一个人回答?
我知道MFC中可以用postMessage()函数,但Qt中没有,
查了查帮助文档,也许是sendEvent()与notify()可以起到类似的作用,但还没有深入看下去
离线sht112
只看该作者 2楼 发表于: 2008-06-01
对了,我的详细问题是这样的,我在一个类中想调用QMessageBox显示一行信息,
这在MFC中很正常,编译也能通过,但却在执行时得到以下错误信息:
ASSERT failure in QWidget: "Widgets must be created in the GUI 
thread.", file kernel/qwidget.cpp
离线XChinux

只看该作者 3楼 发表于: 2008-06-01
没使用QApplication启动吧??
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线sht112
只看该作者 4楼 发表于: 2008-06-01
官方网站上的回答是只能在主线程中做GUI相关操作,但我目前还不知道如何令主线程做显示工作,也不知道为什么我的代码仅仅是在主线程中new的一个新对象,结果新对象中的函数就不是主线程了。
我目前的想法是借鉴MFC的方法,在new后的对象的成员函数中向主线程中的相关响应slots发事件,sendEvent(),不知能否成功
<quote>
  You cannot do GUI operations outside the main thread. Since
  QTextDocument is a GUI object, you should do the operations on it
  inside the main thread.
</quote>
离线sht112
只看该作者 5楼 发表于: 2008-06-01
引用第3楼XChinux于2008-06-01 22:43发表的  :
没使用QApplication启动吧??


小问题把版主引来了,
是一个正常的qt程序,都能正常显示对话框,但后来我在main()中new了一个新的对象,然后在新对象的成员函数中调用QMessageBox(),想借此调试成员函数中的问题,结果就出现上述提示了。

难道new一个新实例后新对象就另外开一个线程?不理解
离线sht112
只看该作者 6楼 发表于: 2008-06-02
求人不如求已!
问题已解决,
前期的思路基本是正确的,
使用postEvent()函数向主或对话框发送一个自定义事件,同时重写对话框的cumstom()成员函数,即可。

深感qt实在是太方便了!同样的问题,用MFC来解决要麻烦得多!过一段想写一篇Qt与MFC比较的文章,深入一些的,比较到变量个数的层次...
离线0603136
只看该作者 7楼 发表于: 2008-07-21
请问这个该怎么实现?谢谢
我用用qt编了两个界面,不妨分别命名为form1.ui和form2.ui,在form1中设置一个按钮,点击时可以弹出form2(可以实现)。
在form1中设置另一个按钮,点击时执行数据采集程序段,可以进行数据采集。我想把这个时候采集到的数据实时显示在form2中 但是我试了几种方法,form1采集到的数据怎么都不能在form2中显示,不知道怎么样才能实现这个功能,谢谢!
呵呵,我自信
离线blusherbear

只看该作者 8楼 发表于: 2008-07-21
引用第7楼0603136于2008-07-21 20:16发表的  :
请问这个该怎么实现?谢谢
我用用qt编了两个界面,不妨分别命名为form1.ui和form2.ui,在form1中设置一个按钮,点击时可以弹出form2(可以实现)。
在form1中设置另一个按钮,点击时执行数据采集程序段,可以进行数据采集。我想把这个时候采集到的数据实时显示在form2中 但是我试了几种方法,form1采集到的数据怎么都不能在form2中显示,不知道怎么样才能实现这个功能,谢谢!

已在你的帖子中回复,看能否有所帮助。
离线blusherbear

只看该作者 9楼 发表于: 2008-07-21
引用第5楼sht112于2008-06-01 22:50发表的  :
小问题把版主引来了,
是一个正常的qt程序,都能正常显示对话框,但后来我在main()中new了一个新的对象,然后在新对象的成员函数中调用QMessageBox(),想借此调试成员函数中的问题,结果就出现上述提示了。
.......

能否问一下new的是什么类呢?
快速回复
限100 字节
 
上一个 下一个