我对Qt布局系统有疑问。第一张照片是我得到的,第二张是我想要的。
我里面有一个垂直拆分器和两个小部件。第一个窗口小部件具有扩展策略,并将拉伸(stretch)因子扩展为1。第二个窗口小部件具有最小高度策略,minimumHeight 100和拉伸(stretch)因子0。启动后的结果应该是第二张图片,但实际上是第一张图片,我需要手动向下拖动拆分器。问题在哪里?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSizePolicy sp;
QSplitter * splitter = new QSplitter(Qt::Vertical);
splitter->setHandleWidth(1);
splitter->setChildrenCollapsible(false);
sp.setHorizontalPolicy(QSizePolicy::Expanding);
sp.setVerticalPolicy(QSizePolicy::Expanding);
splitter->setSizePolicy(sp);
QWidget * topWidget = new QWidget(splitter);
sp.setVerticalStretch(1);
topWidget->setSizePolicy(sp);
topWidget->setMinimumHeight(200);
QWidget * bottomWidget = new QWidget(splitter);
sp.setVerticalStretch(0);
bottomWidget->setSizePolicy(sp);
QTextEdit * edit = new QTextEdit();
edit->setFrameStyle(QFrame::NoFrame);
edit->setMinimumSize(0, 100);
sp.setVerticalPolicy(QSizePolicy::Minimum);
edit->setSizePolicy(sp);
QVBoxLayout * bottomWidgetLayout = new QVBoxLayout(bottomWidget);
bottomWidgetLayout->addWidget(edit);
bottomWidget->setLayout(bottomWidgetLayout);
splitter->setStretchFactor(0, 1);
splitter->setStretchFactor(1, 0);
this->centralWidget()->layout()->addWidget(splitter);
}
最佳答案
如您所见,here QSizePolicy::Minimum
具有GrowFlag
,而您需要使用ShrinkFlag
的策略时,如果要告诉小部件缩小,请尝试使用QSizePolicy::Maximum
代替。
关于c++ - Qt布局系统(QTextEdit没有最小大小),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16598253/