C++ QGridLayout的行跨度未按预期工作
以下是如何绘制跨越两列的按钮:C++ QGridLayout的行跨度未按预期工作,c++,qt4,qgridlayout,C++,Qt4,Qgridlayout,以下是如何绘制跨越两列的按钮: #include <QtGui> int main(int argv, char **args) { QApplication app(argv, args); QPushButton *foo = new QPushButton("foo"); QPushButton *bar = new QPushButton("bar"); QPushButton *baz = new QPushButton("baz");
#include <QtGui>
int main(int argv, char **args)
{
QApplication app(argv, args);
QPushButton *foo = new QPushButton("foo");
QPushButton *bar = new QPushButton("bar");
QPushButton *baz = new QPushButton("baz");
QGridLayout *layout = new QGridLayout();
layout->addWidget(foo, 0, 0);
layout->addWidget(bar, 0, 1);
layout->addWidget(baz, 1, 0, 1, 2); // span 2 columns
QWidget window;
window.setLayout(layout);
window.setWindowTitle("test");
window.show();
return app.exec();
}
以下是我得到的:
您的布局很好,baz按钮跨越两行。问题是它没有使用所有可用空间。您必须将按钮的垂直调整大小策略从固定更改为最小扩展。我添加了以下内容,之后一切正常:
foo->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
bar->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
baz->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
()
foo->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
bar->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);
baz->setSizePolicy(QSizePolicy::MinimumExpanding,
QSizePolicy::MinimumExpanding);