关于trolltech的几个例子使用QWidget而不是QMainWindow作为简单Qt应用程序的主窗口。
现在我只需要一个简单的窗口,其中包含一个覆盖整个客户区的单个内容窗口小部件(QGlWidget)。
但是,当我显示一个带有单个内容窗口的QWidget窗口时,它会自动调整为自己的小尺寸。
如果我创建没有子节点的QWidget父窗口它是一个很好的大默认大小。
我不想在单个子窗口中使用Layouts:/
答案 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并查看它创建的代码,您可以看到它创建一个“隐藏”小部件,如果您尝试直接在顶层使用布局。
在我找到的任何地方都不明显,直观或有记录。