我希望有一个 Qt 对话框窗口:
我已经能够通过创建对话框模式来实现 1 和 3,并且我可以通过使用 Qt::WindowStaysOnTopHint 窗口标志来实现 1 和 2。但我无法让这三项工作都成功——这可能吗?
如果答案是特定于操作系统的,我主要在 Mac 上工作,但我更喜欢也适用于 Windows 和 Linux 的解决方案。谢谢!
最佳答案
您可以尝试使用 QGuiApplication::applicationStateChanged
.这样,如果用户进入或离开您的应用程序,您就会收到通知。只需动态添加和删除 Qt::WindowStaysOnTopHint
您的窗口的标志。如果您有多个窗口,可以使用 QGuiApplication::focusWindowChanged
和第一个一起。
编辑:要使对话框非模态,请设置 NULL
作为它的父级,或将 windowModality-Property 设置为 Qt::NonModal
并使用 show
显示对话框而不是 open
或 exec
QDialog 子类中的示例代码:
connect(QApplication::instance(), SIGNAL(applicationStateChanged(Qt::ApplicationState)), this, SLOT(changeAlwaysOnTop(Qt::ApplicationState)));
...
void MyDialog::changeAlwaysOnTop(Qt::ApplicationState state)
{
if (state == Qt::ApplicationActive)
setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
else
setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint);
show();
}
关于qt - 父级之上的无模式 Qt 窗口,但不在其他应用程序之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32216498/