我希望有一个 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();
}


