【问题标题】:Use Scrollbar with QGridLayout将滚动条与 QGridLayout 一起使用
【发布时间】:2018-02-09 04:25:36
【问题描述】:

目前我有这段代码可以将几个 QLineEdits 添加到 ui.widget 但我还需要一个垂直滚动条以防元素过多 -> 可用空间有限:

QGridLayout *gridLayout = new QGridLayout(ui.widget);

int rowIndex = 0, colIndex = 0;
for(auto number : m_numbers)
{
    QLineEdit *lineEdit = new QLineEdit();
    gridLayout->addWidget(lineEdit, rowIndex, colIndex, Qt::AlignLeft);

    if(colIndex == 7)
    {
        colIndex = 0;
        ++rowIndex;
    }
    else ++colIndex;
}
ui.widget->setLayout(gridLayout);

如何让它可滚动?

【问题讨论】:

    标签: c++ qt scrollbar qt5


    【解决方案1】:

    使用QScrollBar:QScrollBar 小部件提供垂直或水平滚动条。

    为您的小部件定义一个固定大小,如果用户创建过多的 QLineEdit,请将您自定义的 QScrollBar 添加到该小部件。

    QScrollBar * scroll = new QScrollBar(Qt::Vertical, ui->widget);
    

    或使用QScrollArea 喜欢这张图片:

    这是您在github download here 上的问题的示例项目。

    【讨论】:

    • 我认为 QScrollArea 对你有好处,为什么不呢? QScrollBar 也可以完成这项工作。
    • 我试图改变它但不起作用!后 ui.widget->setLayout(gridLayout);我添加了 QScrollArea *scrollArea = new QScrollArea;滚动区域->setWidget(ui.widget); -> 它是空的,没有元素。
    • 您能详细解释一下吗? (源代码基于我自己)
    • @leon22 我更新了我的答案并添加了一个示例项目。
    • 谢谢,但是 QGridLayout 在哪里!我认为如果你调整我的例子来使用 QScrollArea 会更好!我不清楚这条线应该如何帮助:ui->scrollAreaWidgetContents->layout()->addWidget(lineEdit);?!正如我的问题中所述,我必须使用 QGridLayout,所以这个示例项目并没有真正回答它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多