gpt4 book ai didi

qt - 将小部件添加到 ScrollArea

转载 作者:行者123 更新时间:2023-12-02 07:29:46 24 4
gpt4 key购买 nike

我正在创建一个下载列表的窗口 dimanica。但滚动条不起作用,“小部件子项”被“剪切”。

我哪里错了?谢谢。

来源:

    QWidget *central = new QWidget;
QScrollArea *scroll = new QScrollArea;
QVBoxLayout *layout = new QVBoxLayout(scroll);
scroll->setWidget(central);
scroll->setWidgetResizable(true);

int i=0;
while(i<10){
QWidget *p1 = new QWidget;
QHBoxLayout *hl = new QHBoxLayout(p1);
QLabel *label1 = new QLabel("test");
QLabel *label2 = new QLabel("0%");
hl->addWidget(label1);
hl->addWidget(label2);
layout->addWidget(p1);
i++;
}

QMainWindow *w = new QMainWindow;
w->setGeometry(50,50,480,320);
w->setCentralWidget(scroll);
w->show();

最佳答案

发现你的错误,你应该将layout设置为小部件central而不是scroll:

QWidget *central = new QWidget;
QScrollArea *scroll = new QScrollArea;
QVBoxLayout *layout = new QVBoxLayout(central);
scroll->setWidget(central);
scroll->setWidgetResizable(true);

编辑:

您的标签已经占用了所有可用空间,如果您注意到,label1 从左边框开始并在中间结束,而 label2 从右边框开始并结束。如果我理解正确的话,您希望 label1 占用所有可用空间,而 label2 则仅占用需要的空间,不再需要?

了解 QSizePolicy 类并在标签上使用 setSizePolicy()。尝试在 label2 声明之后插入此行:

QLabel *label2 = new QLabel("0%");
label2->setSizePolicy(QSizePolicy::QSizePolicy::Maximum,QSizePolicy::Maximum);

并在 QMainWindow *w = new QMainWindow; 之前添加行 layout->addStretch();

关于qt - 将小部件添加到 ScrollArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16795494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com