首页 > 解决方案 > Qt5 - 使用 QSizePolicy 调整 QSplitter 的大小

问题描述

我想创建一个包含 3 个部分的小部件:主窗口包含一个水平 QSplitter,其中包含一个垂直 QSplitter。但是我没有走那么远,因为第一个拆分器没有在窗口中最大化。我阅读了文档,但仍然无法弄清楚。

MainWindow::MainWindow() {
    setWindowTitle(ProgramVars::getName() + " - " + ProgramVars::getVersion());
    setWindowIcon(ProgramVars::getIcon());

    content = new QSplitter(this);
    content->setLineWidth(2);
    content->setMidLineWidth(2);

    QPixmap pixmap;
    pixmap.load("../res/icon.png"); //just for testing
    l1 = new QLabel;
    l2 = new QLabel;
    l1->setPixmap(pixmap);
    l2->setPixmap(pixmap);

    content->addWidget(l1);
    content->addWidget(l2);

    content->setAutoFillBackground(true);
    QPalette palette(QPalette::Background, Qt::red); //making size visible
    content->setPalette(palette);

    content->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
    content->setMaximumSize(size());
}

(我认为添加完整的源文件不是必需的,但如果您愿意,我会添加它们。)

标签: c++qtqt5qsplitterqsizepolicy

解决方案


我刚刚找到了我的问题的答案:

第一

我必须将子小部件添加到 QMainWindow 提供的布局中,而不是直接作为孩子。

MainWindow::MainWindow() {
    content = new QSplitter();
    content->setLineWidth(2);
    content->setMidLineWidth(2);

    **setCentralWidget(content);**
    content->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
}

我缩短了代码,因为其余的并不重要。

第二

这篇文章回答了我的第二个。


推荐阅读