2

在 Qt 学习曲线上,我看到了很多关于动态布局的问题,但这些解决方案对我不起作用,或者我不太了解它们。

参考问题:: Qt Scroll Area 没有添加滚动条如何让小部件溢出以使滚动条出现在 Qt 中?

问题::我想在QScrollArea. 我已经能够在 Qt Creator 中手动执行此操作,现在我正在尝试通过代码执行此操作。

  • 如何防止小部件拉伸/强制区域滚动?

  • 如何让添加的小部件从顶部开始?我有一个垂直垫片,QVBoxLayout但这会将所有东西推到底部。


简单的测试代码::

void MainWindow::on_pushButton_clicked()
{
    ui->myScroll->setWidgetResizable(true); //making sure this is set
    QPushButton *b = new QPushButton(this);
    b->setText(QString("Hello Button"));
    QHBoxLayout *h = new QHBoxLayout();
    h->addWidget(b,0);
    ui->myVBoxLayout->addLayout(h,0);

}

结果:: 左侧压扁(动态)– 右侧正常(手动设置)

在此处输入图像描述


Qt Creator Setup:: 左侧:动态 – 右侧手动设置

在此处输入图像描述

特性::

在此处输入图像描述

4

1 回答 1

1

您可以setMinimumHeight()在按钮上设置使用以防止按钮被压扁。布局可以配置setContentsMargin()为项目边框和项目内容之间的空间(QtDesigner 将所有四个方向设置为 9 IIRC)和setSpacing()项目之间的空间(QtDesigner 使用默认值 6)。还setWidgetResizable(true)允许您的滚动区域调整该区域内的视图小部件的大小(这是放置布局和子项的位置)。

这对我有用:

在构造函数或代码集 scrollArea->widget() 中保存 QVBoxLayout:

v = new QVBoxLayout;
ui->scrollArea->widget()->setLayout(v);

在按钮槽中:

void MainWindow::pushButtonPressed()
{
    ui->scrollArea->setWidgetResizable(true);
    QPushButton *b = new QPushButton(this);
    b->setText(QString("Hello Button"));
    QHBoxLayout *h = new QHBoxLayout();
    h->addWidget(b,0);
    v->addLayout(h);
}
于 2013-08-14T05:06:19.723 回答