• 14181阅读
  • 5回复

【提问】如何设置窗口焦点? [复制链接]

上一主题 下一主题
离线xd1198
 

只看楼主 倒序阅读 楼主  发表于: 2005-10-11
问题是这样的:

  启动主窗口 A的时候,同时启动一个线程,监听一个端口。当收到消息时要弹出一个警告窗口,希望能实现:如果不关掉警告窗口,就不能选取主窗口进行操作。 我现在的做法是:把主窗口的指针 *a 作为线程函数的参数,然后调用QMessageBox::warning(*a,"save failed","Error!"); 这样倒是可以弹出警告框,但是,报错,说mutex之类的错误
。而且 ,如果你点住 这个告警框,多拉动几次,就会把主窗口覆盖了,而且,这个告警框也无法关掉了,通过确定键或者右上方的关闭键都无法关掉。但是,如果你在这个框刚弹出的时候操作,就可以关掉。如果换成调用QMessageBox::warning(NULL,"save failed","Error!"); 效果也是一样的。不知道是不是要设置焦点的问题?请各位大虾帮忙了。
[ 此贴被xd1198在2005-10-11 15:17重新编辑 ]
离线rogi1126

只看该作者 1楼 发表于: 2005-10-12
弹出的警告框\本身就是一个窗体,他一旦建立,就得到焦点,其父是得不到焦点的,你还是换别的,也可以在切换焦点的时候先HIDE警告框试试,不知道行不行~~
离线xd1198

只看该作者 2楼 发表于: 2005-10-17
谢谢楼上兄弟的解答。不过,可能我的情况和你说的还不太一样。因为我的警告框是在一个单独的线程里实现的,是一个独立的窗口,与主窗口并没有关系。如果,它是主窗口的子窗口的话,那它一旦弹出,自然就会获得焦点。
离线XChinux

只看该作者 3楼 发表于: 2005-10-17
如果是这样的话,楼主就要进行特殊设置了,如果弹出的对话框显示后,就要使得原来的程序在激活时反过来再把弹出对话框激活.在弹出对话框关闭后,正把原来的程序激活.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线myer

只看该作者 4楼 发表于: 2005-10-18
我原来遇到过类似问题。
这不是设置焦点的问题,使用QEvent
否则不解决问题。
http://user.qzone.qq.com/56430808
离线myer

只看该作者 5楼 发表于: 2005-10-18
或者使用slot应该也可以,不过我觉得使用event通知更加合理些
http://user.qzone.qq.com/56430808
快速回复
限100 字节
 
上一个 下一个