【发布时间】:2017-07-20 14:25:06
【问题描述】:
如何重现:创建一个新的 Qt Widgets 应用程序并将其 mainwindow.cpp 替换为以下内容:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHBoxLayout>
#include <QScrollArea>
#include <QToolButton>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QScrollArea *scrollArea = new QScrollArea;
setCentralWidget(scrollArea);
QFrame *scrollWidget = new QFrame;
scrollArea->setWidget(scrollWidget);
scrollArea->setWidgetResizable(true);
QHBoxLayout *scrollLayout = new QHBoxLayout;
scrollWidget->setLayout(scrollLayout);
for(int i = 0; i < 10; ++i)
{
QToolButton *button = new QToolButton;
button->setText(QString(20, QChar('a' + i)));
scrollLayout->addWidget(button);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
在您构建项目后,生成的应用程序的窗口将拒绝垂直缩小到以下:
我的问题:如何去除按钮上方和下方的空白区域?我尝试操纵尺码提示、尺码政策和其他一切远程相关的东西,但没有令人满意的结果。影响它的唯一方法似乎是硬编码 QScrollArea 小部件的最小高度,这在实践中几乎没有用。
【问题讨论】:
-
您希望小部件如何显示?
-
@eyllanesc 按钮上方和下方没有空白区域。我不明白它是从哪里来的——起初我以为这些是一些可配置的边距,但不是。
-
如果MainWindow的高度超过了按钮的高度加上QScrollArea的滑块的高度,应该怎么看?
-
MainWindow 可调整大小 - 请注意其右下角的句柄。问题是为什么它拒绝垂直收缩超过这一点。
-
我明白了,你想压缩 QMainWindow 的大小也让那些空格消失,对吗?
标签: c++ qt qscrollarea qlayout