用作窗口时QWidget的大小如何?

时间:2010-02-02 05:17:19

标签: qt

关于trolltech的几个例子使用QWidget而不是QMainWindow作为简单Qt应用程序的主窗口。

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

但是,当我显示一个带有单个内容窗口的QWidget窗口时,它会自动调整为自己的小尺寸。

如果我创建没有子节点的QWidget父窗口它是一个很好的大默认大小。

我不想在单个子窗口中使用Layouts:/

3 个答案:

答案 0 :(得分:3)

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

否则如果你真的需要你的小部件在彼此内部,并且适合它的大小,你将不得不使用一个布局。

答案 1 :(得分: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()是否会为你调整大小,也许你需要同时调整大小+ showFullScreen :))

干杯:)

P.S。使用布局实际上是一种选择。它不贵并且灵活。所有它得到:“layout = new QVBoxLayout(myWidget); layout-> addWidget(myWidget);”你已经完成了:)

答案 2 :(得分:0)

并非总是如此。

我发现在使用QVBoxLayout和QHBoxLayout安排子窗口小部件时,QMainWindow不能用作父窗口小部件。

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

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

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

在我找到的任何地方都不明显,直观或有记录。