在 QT 中实现具有多个小部件的视图的最佳方法是啥?

Posted

技术标签:

【中文标题】在 QT 中实现具有多个小部件的视图的最佳方法是啥?【英文标题】:Best way to implement a view with multiple widgets in QT?在 QT 中实现具有多个小部件的视图的最佳方法是什么? 【发布时间】:2011-02-25 00:20:01 【问题描述】:

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

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

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

提前致谢

【问题讨论】:

【参考方案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);

以上是关于在 QT 中实现具有多个小部件的视图的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中实现与多个设备的蓝牙连接的最佳方法是啥?

如何在 Qt 中实现基于 GStreamer 的视频小部件?

在 SwiftUI 中实现昂贵的派生属性的最佳方法是啥?

在 ViewPager 中实现弹性/反弹动画效果的最佳方法是啥?

在 Angular 2 中实现滑动导航的最佳方式是啥?

在 Objective-C 中实现这种滚动 UI 的最佳方式是啥?