QT中基于QScrollArea封装一个能够动态产生控件的类

本文档介绍如何在QT中利用QScrollArea封装一个类,该类能动态创建控件。主要包括头文件、cpp文件、mainwindow.h和mainwindow.cpp的代码结构,并提示开发者需要根据需求删除无关代码。附带了效果截图。
摘要由CSDN通过智能技术生成

1.头文件

#ifndef BASEUI_H
#define BASEUI_H

#include <QString>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QWidget>
#include <QFrame>
#include <QObject>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QLayout>
#include <QScrollArea>
#include <QGroupBox>
#include <QFont>
#include <QDebug>

#include "common.h"

class BaseUi : public QObject
{
     Q_OBJECT

public:
    BaseUi();
    ~BaseUi();
    void BaseScrollArea();
    inline QFont font()
    {
        QFont m_font("宋体", 18, 75);
        return m_font;
    }

public slots:
    void addAutoRecordUi(QString lab_neme, QString ledit_name);
    void addMulRecordUi(QString lab_neme, QString ledit_name, QString but_name);
    void addCheckComUi();
public:
    QVBoxLayout *m_vbox_layout;
    QVBoxLayout *m_main_layout;
};

#endif // BASEUI_H

2.cpp文件

#include "baseui.h"
#include <QFrame>

using namespace Common;

BaseUi::BaseUi()
{

}

BaseUi::~BaseUi()
{

}

void BaseUi::BaseScrollArea()
{
    QScrollArea *pArea = new QScrollArea();
    QWidget *pWidget = new QWidget();
    pWidget->setStyleSheet("QWidget" "{background:white;}");
    m_vbox_layout = new QVBoxLayout();
    m_vbox_layout->addSpacerItem(new QSpacerItem(100, 30, QSizePolicy::Expanding, QSizePolicy::Expanding));
    pWidget->setLayout(m_vbox_layout);
    pArea->setWidget(pWidget);
    pArea->setWidgetResizable(true);
    m_main_layout = new QVBoxLayout();
    m_main_layout->addWidget(pArea);
}

void BaseUi::addAutoRecordUi(QString lab_neme, QString ledit_name)
{
    QWidget *page = new QWidget;
    QGridLayout *layout = new QGridLayout(page);

    QLabel *label = new QLabel;
    label->setText(lab_neme);
    label->setFont(font());

    QLineEdit *ledit = new QLineEdit;
    ledit->setText(ledit_name);
    ledit->setFont(font());

    layout->addWidget(label, 0, 1);
    layout->addWidget(ledit, 0, 2);

    page->setLayout(layout);

    m_vbox_layout->insertWidget(m_vbox_layout->count()-1, page);

}

void BaseUi::addMulRecordUi(QString lab_neme, QString ledit_name, QString but_name)
{
    QWidget *page = new QWidget;
    QGridLayout *layout = new QGridLayout(page);

    QLabel *label = new QLabel;
    label->setText(lab_neme);
    label->setFont(font());

    QL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The_Web3_社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值