2

我在 qml 中有一个应用程序。我正在使用快速查看并将其设置为全屏。但是当我尝试从全屏模式打开一个 .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)

在这个主要布局是快速浏览

4

1 回答 1

0

Qt 中的小部件父级行为在 和 之间有所QDialog不同QWidget。AQDialog始终是顶级小部件(窗口)。我猜你的.ui文件创建的对象不是QDialog. 请确保它是:

QWidget * _parent = loader.load(&file);
Q_ASSERT(qobject_cast<QDialog*>(_parent));

如果此断言失败,那么您需要将.ui文件的基类更改为对话框。

您可能还应该激活并提高您的对话框:

_parent->activateWindow();
_parent->raise(); 
于 2013-10-18T12:56:32.550 回答