Qt5 - 使用 QSizePolicy 调整 QSplitter 的大小
Qt5 - Resizing of QSplitter with QSizePolicy
我想创建一个包含 3 个部分的小部件:主窗口包含一个水平 QSplitter,其中包含一个垂直 QSplitter。但是我没有走那么远,因为第一个拆分器在 Window 中没有最大化。看了文档还是搞不懂
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());
}
(我认为没有必要添加完整的源文件,但如果您愿意,我会添加它们。)
我刚刚找到问题的答案:
第一
我必须将子部件添加到 QMainWindow 提供的布局中,而不是直接作为子部件。
MainWindow::MainWindow() {
content = new QSplitter();
content->setLineWidth(2);
content->setMidLineWidth(2);
**setCentralWidget(content);**
content->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
}
我缩短了代码,因为其余的都不重要。
第二
并且 this post 回答了我的第二个问题。
我想创建一个包含 3 个部分的小部件:主窗口包含一个水平 QSplitter,其中包含一个垂直 QSplitter。但是我没有走那么远,因为第一个拆分器在 Window 中没有最大化。看了文档还是搞不懂
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());
}
(我认为没有必要添加完整的源文件,但如果您愿意,我会添加它们。)
我刚刚找到问题的答案:
第一
我必须将子部件添加到 QMainWindow 提供的布局中,而不是直接作为子部件。
MainWindow::MainWindow() {
content = new QSplitter();
content->setLineWidth(2);
content->setMidLineWidth(2);
**setCentralWidget(content);**
content->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
}
我缩短了代码,因为其余的都不重要。
第二
并且 this post 回答了我的第二个问题。