我在qml中有一个应用程序。我正在使用quickview并将其设置为全屏。但是当我尝试从全屏模式打开.ui文件(QWidget)时,它将在主窗口后面。当我不处于全屏模式时,这不会发生。我试过设置标志(Qt :: WindowStaysOnTopHint),但它不起作用。我正在使用QT5。谢谢你的帮助
QUiLoader loader;
QFile file("abc.ui");
file.open(QFile::ReadOnly);
QWidget * _parent = loader.load(&file);
file.close();
_parent->setParent(mainlayout);
_parent->setWindowFlags(Qt::Tool);
_parent->setWindowFlags(_parent->windowFlags() | Qt::WindowStaysOnTopHint)
在这里,mainlayout是quickview
答案 0 :(得分:0)
Qt中的窗口小部件育儿行为在QDialog
和QWidget
之间有所不同。 QDialog
始终是顶级窗口小部件(窗口)。我猜你的.ui
文件创建的对象不是QDialog
。请确保它是:
QWidget * _parent = loader.load(&file);
Q_ASSERT(qobject_cast<QDialog*>(_parent));
如果此断言失败,则需要将.ui
文件的基类更改为对话框。
您可能还应该激活并提升对话框:
_parent->activateWindow();
_parent->raise();