标题:【提问】如何设置窗口焦点?
作者:xd1198
日期:2005-10-11 15:09
内容:
问题是这样的:
启动主窗口 A的时候,同时启动一个线程,监听一个端口。当收到消息时要弹出一个警告窗口,希望能实现:如果不关掉警告窗口,就不能选取主窗口进行操作。 我现在的做法是:把主窗口的指针 *a 作为线程函数的参数,然后调用QMessageBox::warning(*a,"save failed","Error!");这样倒是可以弹出警告框,但是,报错,说mutex之类的错误
。而且 ,如果你点住 这个告警框,多拉动几次,就会把主窗口覆盖了,而且,这个告警框也无法关掉了,通过确定键或者右上方的关闭键都无法关掉。但是,如果你在这个框刚弹出的时候操作,就可以关掉。如果换成调用QMessageBox::warning(NULL,"save failed","Error!");效果也是一样的。不知道是不是要设置焦点的问题?请各位大虾帮忙了。
#1 [rogi1126 10-12 17:43]
弹出的警告框\本身就是一个窗体,他一旦建立,就得到焦点,其父是得不到焦点的,你还是换别的,也可以在切换焦点的时候先HIDE警告框试试,不知道行不行~~
#2 [xd1198 10-17 16:41]
谢谢楼上兄弟的解答。不过,可能我的情况和你说的还不太一样。因为我的警告框是在一个单独的线程里实现的,是一个独立的窗口,与主窗口并没有关系。如果,它是主窗口的子窗口的话,那它一旦弹出,自然就会获得焦点。
#3 [XChinux 10-17 16:43]
如果是这样的话,楼主就要进行特殊设置了,如果弹出的对话框显示后,就要使得原来的程序在激活时反过来再把弹出对话框激活.在弹出对话框关闭后,正把原来的程序激活.
#4 [myer 10-18 08:34]
我原来遇到过类似问题。
这不是设置焦点的问题,使用QEvent
否则不解决问题。
#5 [myer 10-18 08:35]
或者使用slot应该也可以,不过我觉得使用event通知更加合理些