【QT】 Qt自定义ui控件

在使用Qt的ui设计时,Qt为我们提供了标准的窗口控件,但是在很多复杂工程中,标准窗口控件并不能满足所有的需求,这时就需要我们自定义控件。我们自定义的类既可以作为独立的窗口显示,又可以作为一个控件显示。


我们要实现的自定义控件效果如下:

【QT】 Qt自定义ui控件_第1张图片

点击spinBox,滑动条Slider开始滑动。滑动条Slider开始滑动,spinBox的数字也开始改变。spinBox和滑动条Slider通过在ui设计时拖动控件实现。



步骤如下:

1.1 添加新文件 - Qt – 设计师界面类 (.h .cpp .ui)

创建一个Qt设计师窗体文件和相应的类(C++头文件和源文件)用于实现,您可以将此窗体文件和类加入到已经存在的Qt 控件项目中。

【QT】 Qt自定义ui控件_第2张图片

界面模板选择最干净的Widget:

【QT】 Qt自定义ui控件_第3张图片

给自己设计的界面类取个名字,SmallWidget:

【QT】 Qt自定义ui控件_第4张图片



1.2 smallwidget.ui中 设计 QSpinBox和QSlider 两个控件

smallwidget.ui 中,拖拽 QSpinBoQSlider 这两个控件,选中 SmallWidget 对象,选中水平布局。

【QT】 Qt自定义ui控件_第5张图片

注意:SmallWidget的类型是Qwidget



1.3 实现功能,并提供 getNum 和 setNum对外接口

smallwidget.h

class SmallWidget : public QWidget
{
    Q_OBJECT

public:
    explicit SmallWidget(QWidget *parent = nullptr);
    ~SmallWidget();

    //设置两个对外接口
    void setNum(int num);
    int getNum();

private:
    Ui::SmallWidget *ui;
};

smallwidget.cpp

#include "smallwidget.h"
#include "ui_smallwidget.h"

SmallWidget::SmallWidget(QWidget *parent) :  QWidget(parent), ui(new Ui::SmallWidget)
{
    ui->setupUi(this);

    // QSpinBox数字改变 QSlider跟着移动
    connect(ui->spinBox, SIGNAL(valueChanged(int)), ui->horizontalSlider, SLOT(setValue(int)));


    // QSlider移动 QSpinBox数字跟着改变
    connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), ui->spinBox, SLOT(setValue(int)));
}


//设置值
void SmallWidget::setNum(int num)
{
    ui->spinBox->setValue(num);
}

//获取值
int SmallWidget::getNum(){
    return ui->spinBox->value();
}



1.4 Widget.ui中使用自定义控件,拖拽一个Widget,点击提升为,点击添加,点击提升

widget.ui 中,拖拽一个Widget,

图片名称

点击提升为,

【QT】 Qt自定义ui控件_第6张图片

点击添加,

【QT】 Qt自定义ui控件_第7张图片

点击提升。

【QT】 Qt自定义ui控件_第8张图片

注意,这时 widget.ui 中 widget 的类名从 QWidget 变成 SmallWidget 。

【QT】 Qt自定义ui控件_第9张图片

运行效果:

【QT】 Qt自定义ui控件_第10张图片


1. 5 点击按钮,获取当前值,设置当前值

widget.ui 中,再放置两个 QPushButon 按钮,用来获取当前值,设置当前值。

【QT】 Qt自定义ui控件_第11张图片

运行结果:

【QT】 Qt自定义ui控件_第12张图片



参考链接:
手把手教QT—8.自定义控件

你可能感兴趣的:(【QT】,qt,ui,命令模式)