我想用Visual Studio 2013在C ++中构建一个Qt5.2应用程序。我应用QWidget::resize
函数将上图中QWidget对象的大小设置为1200 * 800。但似乎QWidget对象不能那么大(有垂直和水平滚动条)。
如何将QWidget对象的大小扩展到1200 * 800并删除滚动条?如何在垂直和水平方向上将对象放在应用程序的中心?
答案 0 :(得分:1)
您需要提供最简单的例子。我们不应该猜测。
我只能看到三个小部件:顶级一个,QScrollArea
,以及滚动区域内的任何小部件。如果是这种情况,则滚动区域不受布局管理,当您调整顶级窗口小部件时,滚动区域的大小保持不变。
我看到两个解决方案,假设MyContentsWidget
是绘制遗传物质的小部件(如果它是什么)。
摆脱顶级窗口小部件并使用QScrollArea
作为顶级窗口小部件:
int main(int argc, char ** argv) {
QApplication app(argc, argv);
QScrollArea area;
MyContentsWidget contents;
area.setWidget(&contents);
area.show();
return app.exec();
}
为toplevel小部件添加一个布局,以便它适当地调整滚动区域的大小:
class MyWindow : public QWidget {
QGridLayout m_layout;
QScrollArea m_area;
MyContentsWidget m_contents;
public:
MyWindow(QWidget * parent = 0) : QWidget(parent), m_layout(this) {
m_layout.addWidget(&m_area, 0, 0);
m_area.setWidget(&m_contents);
}
};
在这两种情况下,声明的顺序与销毁顺序相反,因为必须确保在滚动区域之前销毁MyContentsWidget
,所以它很重要。
答案 1 :(得分:0)
将您的小部件添加到QLayout:
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(widget);
mainWindow->setLayout(layout);