13 自定义控件
代码资源:https://download.csdn.net/download/qq_36926037/85045644
13.1 项目创建
13.2 自定义控件封装
13.2.1 步骤1:新建自定义控件(包含.cpp/.h/.ui文件)
13.2.2 步骤2: 自定义控件界面设计
(1)打开自定义控件类的ui界面文件
(2)在自定义控件类的ui界面文件中,添加需要封装的控件
(3)自定义控件类的ui界面的调整
13.2.3 步骤3: 自定义控件使用
(1)查看自定义控件所属的类(父类为QWidget)
(2)打开主的ui界面文件
(3)在主界面文件中,添加自定义控件
13.2.4 步骤4: 自定义控件功能设计
(1)找到自定义控件类,的源文件smallwidget.cpp
(2)绑定SpinBox控件和>horizontalSlider控件
#include "smallwidget.h"
#include "ui_smallwidget.h"
SmallWidget::SmallWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::SmallWidget)
{
ui->setupUi(this);
//(1)绑定spin box 和vertical slider:实现改变Spin box值,horizontalSlider自动滑动
void(QSpinBox::*spSignal)(int)=&QSpinBox::valueChanged;//使用重载的信号地址
connect(ui->spinBox,spSignal, ui->horizontalSlider,&QSlider::setValue);
}
SmallWidget::~SmallWidget()
{
delete ui;
}
//(2)绑定horizontalSlider和spin box,实现移动horizontalSlider,spin box数值改变
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
(3)获取Spinbox控件内的值,设置spinBox控件的值。
#ifndef SMALLWIDGET_H
#define SMALLWIDGET_H
#include <QWidget>
namespace Ui {
class SmallWidget;
}
class SmallWidget : public QWidget
{
Q_OBJECT
public:
explicit SmallWidget(QWidget *parent = nullptr);
~SmallWidget();
//设置值
void setNum(int num);
//获取值
int getNum();
private:
Ui::SmallWidget *ui;
};
#endif // SMALLWIDGET_H
#include "smallwidget.h"
#include "ui_smallwidget.h"
SmallWidget::SmallWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::SmallWidget)
{
ui->setupUi(this);
//(1)绑定spin box 和horizontalSlider
void(QSpinBox::*spSignal)(int)=&QSpinBox::valueChanged;//使用重载的信号地址
connect(ui->spinBox,spSignal, ui->horizontalSlider,&QSlider::setValue);
//(2)绑定horizontalSlider和spin box实现,移动horizontalSlider,spin box数值改变
connect(ui->horizontalSlider,&QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
}
void SmallWidget::setNum(int num)
{
ui->spinBox->setValue(num);
}
int SmallWidget::getNum()
{
return ui->spinBox->value();
}
SmallWidget::~SmallWidget()
{
delete ui;
}
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//(1)获取当前空间内的值
connect(ui->pushButton,&QPushButton::clicked,[=]()
{
qDebug()<<ui->widget->getNum();
});
//(2)设置控件内的值为一半
connect(ui->pushButton2,&QPushButton::clicked,[=]()
{
ui->widget->setNum(5);
});
}
Widget::~Widget()
{
delete ui;
}