QT中Dialog去掉标题后就不能像QMessageBox那样让其它窗口失效,怎么办才好?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中Dialog去掉标题后就不能像QMessageBox那样让其它窗口失效,怎么办才好?相关的知识,希望对你有一定的参考价值。

Qt中,普通对话框运行执行exec( ),就可以让这个对话框在其它窗口之上,还可以让其它窗口失效,跟QMessageBox是一样的,必须关闭这个窗口下面的窗口才能生效,但如果在这个窗口的构造函数中把标题栏去掉,使用setWindowFlags(Qt::FramelessWindowHint),或其它能去掉标题的参数比如:Qt::WindowTitleHint,Qt::CustomizeWindowHint 等等都会使该窗口失去置顶的效果,万一该窗口下面的窗口比该窗口大,那么这个窗口就彻底被挡住了。

如何才能又去掉标题栏又让窗口置顶,同时还让让其它窗口失效?
不是windows平台,windows的可以我试过了,我说的是 Fedora系统下的QT

楼主有没试清楚啊,我用QWidget为父窗口用QDialog来exec,但不管我怎么试setWindowFlags(Qt::FramelessWindowHint)QDialog还是有置顶效果,而且别的窗口也失效了。(我用的是Qt4.7) 参考技术A dialog->show()
改成
dialog->exec()

QT进度条动画问题

【中文标题】QT进度条动画问题【英文标题】:Problem in animation of progressbar in QT 【发布时间】:2010-02-26 13:40:52 【问题描述】:

我在 QT 中做了进度条,我在模拟器和移动设备中都使用过.. 无限进度条出现但没有动画..(无限进度不会到来)

这是我写的代码

QApplication a(argc, argv);

QProgressDialog *dialog = new QProgressDialog();

dialog->setMinimum(0);
dialog->setMaximum(0);

dialog->showMaximized(); 
dialog->exec();   
return a.exec();

如果有问题请提出建议

【问题讨论】:

我看不出提供的代码有什么问题,所以如果它这样做,我会认为它是 Qt 代码的错误,并提交错误报告(可能与您提供的代码以上作为重现问题的示例程序)。 【参考方案1】:

我在一个使用 QTCreator 和 Qt 4.6.1 的空白项目上尝试了这个,它成功了......

也许你可以尝试添加这一行:qApp->processEvents();

希望对你有所帮助!

编辑:如果您尝试删除该行 dialog->exec();我觉得没必要……

【讨论】:

我通常怀疑 qApp->processEvents() 的使用,尤其是在这种情况下......他完成了所有这些设置,然后调用 a.exec() - 这告诉 QApplication对象运行其事件循环。所以它应该已经在处理事件了。 嘿,安迪,如果我在 QT creator 中创建的桌面对话框应用程序运行良好,它就可以正常工作。但我对 symbian 应用程序进行了同样的尝试,它只不起作用..我没有确切的原因..你能帮我解决这个问题吗? 好吧,正如 Caleb 所说,也许您应该将其视为一个错误...在 Qt 错误跟踪器上报告它,他们非常被动...我希望他们能快速解决您的问题! 安迪它得到了修复..它在 QT 4.6.0 中的错误..它在 QT 4.6.2 中修复

以上是关于QT中Dialog去掉标题后就不能像QMessageBox那样让其它窗口失效,怎么办才好?的主要内容,如果未能解决你的问题,请参考以下文章

【提问】Qt中如何实现类似MessageBox的Dialog?

qtdialog标题栏颜色

Qt - QDialog,QWidget实现模态及非模态(模态Widget不能有父窗口,如果设置无边框就不能阻塞父窗口,但是可以强行设置指定Qt::Dialog,还可以setAttribute(Qt:

qt WindowFlags

QT:对话框Dialog

QT乱码对策