0

奇趣科技的几个例子使用 QWidget 而不是 QMainWindow 作为简单 Qt 应用程序的主窗口。

现在我只需要一个简单的窗口,其中包含一个覆盖整个客户区的内容小部件 (QGlWidget)。

但是,当我显示带有单个内容窗口的 QWidget 窗口时,它会自动将自身调整为很小。

如果我创建没有子级的 QWidget 父窗口,这是一个很好的默认大小。

我不想对单个子窗口使用布局:/

4

3 回答 3

3

我的理解是您使用 QWidget 来显示您的 QGIWidget。尝试直接调用 QGIWidget 的 show 方法(如果您的 QGIWidget 类继承了 QWidget),Qt 将为您创建窗口装饰。

否则,如果您确实需要将您的小部件放在另一个内部并适合其大小,则必须使用布局。

于 2010-02-02T08:55:41.253 回答
2

要么遵循 gregseth 的建议,要么您可以简单地自己调整小部件的大小。(尽管这样你会失去使用布局时 Qt 提供的漂亮的自动调整大小)

在您的情况下,您基本上可以执行以下操作:

QGlWidget* myWidget = new QGlWidget;
myWidget->resize(QApplication::desktopWidget()->availableGeometry().size());

// or maybe instead of resizing show it in fullscreen:
myWidget->showFullScreen();

(实际上我不记得 showFullScreen() 是否会为您调整大小,也许您需要 resize+showFullScreen :))

干杯:)

PS 使用布局实际上是一种选择。它不贵,而且很灵活。它得到的一切:“layout = new QVBoxLayout(myWidget); layout->addWidget(myWidget);” 你就完成了:)

于 2010-02-02T12:39:52.727 回答
0

不总是。

我发现在使用 QVBoxLayout 和 QHBoxLayout 排列子小部件时,QMainWindow 不能作为父小部件工作。

如果您创建一个 QWidget 并使用它来代替 QMainWindow,那么布局将正常工作。

QWidget* centralWidget = new QWidget( MainWindow );
MainWindow->setCentralWidget( centralWidget );

如果您使用 QtCreator 并查看它创建的代码,如果您尝试直接在顶层使用布局,您会看到它创建了一个“隐藏”小部件。

在我发现的任何地方,它都不明显、不直观或记录在案。

于 2013-02-05T21:08:17.657 回答