我对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/

10-09 18:00