运行这段程序,能看到几个窗口?

WATZDS 2011-08-22 07:36:37

#include <QtGui/QApplication>
#include<QDialog>
int main(int argc, char **argv)
{

QApplication app(argc, argv);

QDialog a;
a.setWindowFlags(Qt::Tool);
a.show();
QDialog b(&a);
b.setWindowFlags(Qt::Window|Qt::WindowStaysOnTopHint);
b.showFullScreen();
b.close();
a.setWindowFlags(Qt::Tool|Qt::WindowStaysOnTopHint);
a.show();


return app.exec();
}

我的在xp上。
...全文
147 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shichuan609 2011-08-23
  • 打赏
  • 举报
回复
我在linux下,只看到了一个窗口。如果注释掉//b.close(),就能看到两个窗口了。
WATZDS 2011-08-23
  • 打赏
  • 举报
回复
当时没发现是这个造成的,费了不少功夫呢。莫名奇妙跳出来一个窗口。当时还设置了Qt::FramelessWindowHint,就跳出来一片东西,还不知道是窗口。
WATZDS 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dbzhang800 的回复:]

引用 6 楼 watzds 的回复:
还是我自己看看吧。

不清楚你这样设置flag的意图是什么,如果影响你正常使用,就去提交bug吧
[/Quote]

呵,我可以直接关掉b窗口,可以正常使用,就是好奇。
谢谢回复。
WATZDS 2011-08-23
  • 打赏
  • 举报
回复
改成这样,应该没亏待QDialog吧。
#include <QtGui/QApplication>
#include<QDialog>
int main(int argc, char **argv)
{

QApplication app(argc, argv);

QDialog a;
a.setWindowFlags(a.windowFlags()|Qt::Tool);
a.show();
QDialog b(&a);
b.setWindowFlags(Qt::Window|Qt::WindowStaysOnTopHint);
b.showFullScreen();
b.close();
a.setWindowFlags(a.windowFlags()|Qt::WindowStaysOnTopHint);
a.show();


return app.exec();
}
dbzhang800 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 watzds 的回复:]
还是我自己看看吧。
[/Quote]
不清楚你这样设置flag的意图是什么,如果影响你正常使用,就去提交bug吧
WATZDS 2011-08-23
  • 打赏
  • 举报
回复

还是我自己看看吧。
WATZDS 2011-08-23
  • 打赏
  • 举报
回复
“QDialog 本身就是 Qt::Dialog = 0x00000002 | Qt::Window ,结果让你去掉了一半”

去掉了一半,不可以吗,又如何呢?b为什么hide后又出现呢?
WATZDS 2011-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dbzhang800 的回复:]

引用 1 楼 watzds 的回复:

我能看到两个,不知道为什么

能先描述一下你要做什么么?

Qt::Tool 就是 0x0000000a | Qt::Window
另外:QDialog 本身就是 Qt::Dialog = 0x00000002 | Qt::Window ,结果让你去掉了一半

不管怎么说,两个Window,当然两个窗口了!!
[/Quote]

我是想只显示a窗口,b不是hide了吗,怎么又出来了,还有,b.showFullScreen()换成b.show(),也是一个窗口。
dbzhang800 2011-08-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 watzds 的回复:]

我能看到两个,不知道为什么
[/Quote]
能先描述一下你要做什么么?

Qt::Tool 就是 0x0000000a | Qt::Window
另外:QDialog 本身就是 Qt::Dialog = 0x00000002 | Qt::Window ,结果让你去掉了一半

不管怎么说,两个Window,当然两个窗口了!!
WATZDS 2011-08-22
  • 打赏
  • 举报
回复
我能看到两个,不知道为什么

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧