关于trolltech的几个例子使用QWidget而不是QMainWindow作为简单Qt应用程序的主窗口。用作窗口时QWidget大小如何?
现在我只需要一个简单的窗口,其中包含一个涵盖整个客户区的单个内容窗口小部件(QGlWidget)。
但是,当我显示一个带有单个内容窗口的QWidget窗口时,它会自动将其自身调整为很小。
如果我创建没有孩子的QWidget父窗口这是一个不错的大默认大小。
我不想诉诸使用布局的一个子窗口:/
关于trolltech的几个例子使用QWidget而不是QMainWindow作为简单Qt应用程序的主窗口。用作窗口时QWidget大小如何?
现在我只需要一个简单的窗口,其中包含一个涵盖整个客户区的单个内容窗口小部件(QGlWidget)。
但是,当我显示一个带有单个内容窗口的QWidget窗口时,它会自动将其自身调整为很小。
如果我创建没有孩子的QWidget父窗口这是一个不错的大默认大小。
我不想诉诸使用布局的一个子窗口:/
我的理解是,你使用一个QWidget显示您QGIWidget。尝试直接调用QGIWidget的show方法(如果您的QGIWidget类继承QWidget),Qt将为您创建窗口装饰。
否则,如果你真的需要你的小部件要相互嵌套,并且符合它的大小,你必须使用布局。
请遵循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 :))
干杯:)
PS使用布局实际上是一种选择。它并不昂贵,而且很灵活。它所得到的:“layout = new QVBoxLayout(myWidget); layout-> addWidget(myWidget);”你完成:)
并不总是。
我发现QMainWindow在使用QVBoxLayout和QHBoxLayout来安排子窗口小部件时不会作为父窗口小部件工作。
如果您创建一个QWidget并使用它来代替QMainWindow,那么布局将会正常工作。
QWidget* centralWidget = new QWidget(MainWindow);
MainWindow->setCentralWidget(centralWidget);
如果使用QtCreator,看看它的代码创建你可以看到它创建一个“隐藏”的小工具,如果你想直接在顶层使用的布局。
这并不明显,直观,或记录在我找到的任何地方。
我只是有点困惑。我确定有一些简单的例子使用QWidget作为容器并添加一个QButton - 然后QWidget正确调整大小。 正在调用某种大小调整逻辑 - 如果我创建了一个空的QWidget,它会以相当合理的大小创建。就在我创建一个QGlWidget的时候,它创建的真的很小。 现在,不管你的建议如何,只要使用QGlWidget作为我的顶级小部件即可。 – 2010-02-02 09:56:57