【问题标题】:Best way to implement a view with multiple widgets in QT?在 QT 中实现具有多个小部件的视图的最佳方法是什么?
【发布时间】:2023-03-09 17:08:01
【问题描述】:

我想要一个视图,向用户展示各种 QLabel、.jpg 图像和项目列表(例如 QListView)。我希望它们都可以一起垂直滚动。用于填充各种小部件的数据将由显示此视图的函数设置。我更喜欢在代码中实现它,而不使用 GUI 设计器。

我考虑过创建继承自 QWidget 的自定义小部件,但我发现很难实现它。这是最好的方法吗?

您能否举例说明我应该如何进行?

提前致谢

【问题讨论】:

    标签: qt qt4 symbian


    【解决方案1】:
    //Using QScrollArea
    
    #ifndef MYWIDGET_H
    #define MYWIDGET_H
    
    #include <QWidget>
    #include <QLabel>
    #include <QScrollArea>
    #include <QVBoxLayout>
    
    class MyWidget: public QWidget
    {
        Q_OBJECT
    public:
        explicit MyWidget(QWidget *parent = 0);
    
    private:
        QScrollArea *scrollArea;
        QWidget *widget;
        QLabel *label1;
        QLabel *label2;
        QLabel *label3;
        QVBoxLayout *vLayout;
    };
    
    #endif // MYWIDGET_H
    
    
    #include "mywidget.h"
    
    MyWidget::MyWidget(QWidget *parent) :
        QWidget(parent)
    {
        scrollArea=new QScrollArea(this);
        widget=new QWidget;
        label1=new QLabel("Label1");
        label2=new QLabel("Label2");
        label3=new QLabel("Label3");
    
        label1->setFixedSize(200,100);
        label2->setFixedSize(200,100);
        label3->setFixedSize(200,100);
        vLayout=new QVBoxLayout;
    
        vLayout->addWidget(label1);
        vLayout->addWidget(label2);
        vLayout->addWidget(label3);
        widget->setLayout(vLayout);
    
        scrollArea->setWidget(widget);
        scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
        scrollArea->resize(200,150);
    }
    

    【讨论】:

    • 谢谢,但我还需要添加一个 QListView,这是棘手的部分,因为它有自己的滚动条。这可能吗?
    • 我的意思是,“所有这些都可以一起垂直滚动”,而不是在窗口中有两个滚动条(一个插入另一个滚动条)......
    • 这是我发现的唯一可行的示例代码,赞。我已经对其进行了调整,因此我不必使用课程;我的代码本质上是for (widget in widgets) { layout-&gt;add(widget); } outerWidget-&gt;setLayout(layout); scrollArea-&gt;setWidget(outerWidget); outerLayout-&gt;add(scrollArea); dialog-&gt;setLayout(outerLayout);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 2011-09-10
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多