天天看點

《QT學習筆記 —— 16. QT中自定義控件》

在搭建Qt視窗界面的時候,在一個項目中很多視窗,或者是視窗中的某個子產品會被經常性的重複使用。一般遇到這種情況我們都會将這個視窗或者子產品拿出來做成一個獨立的視窗類,以備以後重複使用。

在使用Qt的ui檔案搭建界面的時候,工具欄欄中隻為我們提供了标準的視窗控件,如果我們想使用自定義控件怎麼辦?

下面通過一個執行個體實作自定義控件

先建立好一個工程,工程的建立可以參考《QT學習筆記 —— 2. 使用向導建立QT項目》,建立工程的時候需要選擇ui檔案。

《QT學習筆記 —— 16. QT中自定義控件》

建立好的工程結構如下:

《QT學習筆記 —— 16. QT中自定義控件》

下面是自定義控件類的步驟:

1. 在項目工程上右鍵選擇 -->添加新檔案

《QT學習筆記 —— 16. QT中自定義控件》

2. 選擇C++ Class

《QT學習筆記 —— 16. QT中自定義控件》

3. 填寫類的名稱

《QT學習筆記 —— 16. QT中自定義控件》

4. 點選下一步/完成即可

5. 工程結構如下:

《QT學習筆記 —— 16. QT中自定義控件》

6、代碼實作

整個工程,隻需要修改smallwidget.cpp檔案

#include "smallwidget.h"
#include <QSpinBox>
#include <QSlider>
#include <QHBoxLayout>

SmallWidget::SmallWidget(QWidget *parent) : QWidget(parent)
{
    QSpinBox *spin = new QSpinBox(this);
    QSlider *slider = new QSlider(Qt::Horizontal, this);

    //把控件添加到布局中
    QHBoxLayout *hLayout = new QHBoxLayout(this);
    hLayout->addWidget(spin);
    hLayout->addWidget(slider);

    //setLayout(hLayout);

    connect(spin, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
            slider, &QSlider::setValue);

    connect(slider,  &QSlider::valueChanged, spin, &QSpinBox::setValue);
}
           

7. 打開Qt的.ui檔案,因為SmallWidget是派生自Qwidget類,是以需要在ui檔案中先放入一個QWidget控件, 然後再上邊滑鼠右鍵

《QT學習筆記 —— 16. QT中自定義控件》
《QT學習筆記 —— 16. QT中自定義控件》
《QT學習筆記 —— 16. QT中自定義控件》

我們可以看到, 這個視窗對應的類從原來的QWidget變成了SmallWidget  

《QT學習筆記 —— 16. QT中自定義控件》

再次編譯運作程式 :

《QT學習筆記 —— 16. QT中自定義控件》