引言
Qt已經提供了很多的基礎控制元件供開發使用,而Qt原生的控制元件有時候並不能滿足我們的需求,特別是在工業的運用上,比如我們需要一個日期時間的選擇器,Qt雖然已經提供了原生的QDateTime控制元件,但這個原生控制元件並不能滿足我們的需求,又比如我們需要實現類似微信左側的訊息列表,單純的原生QListWidget(QListView)並不能完整的滿足需求,這個時候我們就會尋找一種可以滿足我們需求的控制元件。而Qt提供了自定義控制元件的功能,我們可以通過QtCreator自定義自己的控制元件,以滿足業務的需求。下面我們看看如何使用Qt在VS的環境下生成自定義控制元件。
由於做專案中,需要確定按鈕的狀態,我想自定義封裝一個Button控制元件(一個控制元件點選,另一個控制元件變色,帶圖示),並在主介面中直接呼叫。
一,建立工程,並在工程中新增一個新的ui類(用於封裝控制元件)
新增->add qt class->qt widget class (在VS環境下,本篇以VS為例)
新增新檔案->qt->qt設計師介面類 (QT環境下)
二,在mybutton.ui中自定義控制元件
這裡可以是多個控制元件的組合,最後封裝成一個控制元件
三,在mybutton.cpp中編寫要實現button的功能
#include "mybutton.h" MyButton::MyButton(QWidget *parent) : QWidget(parent) { ui.setupUi(this); connect(ui.btn1, &QPushButton::clicked, [=]() { ui.btn2->setIcon(QIcon("D:/Image/Luffy.png")); ui.btn2->setStyleSheet("color:rgb(255,0,0)"); }); } MyButton::~MyButton() { }
四,在主程式中呼叫MyButton類
這個MyButton類可以作為獨立的視窗顯示,也可以作為一個控制元件來使用:開啟 Qt 的.ui 檔案,因為 MyButton是派生自 Qwidget 類,所以需要在 ui 檔案中先放入一個 QWidget 控制元件,然後再上邊滑鼠右鍵。
彈出提升視窗部件對話方塊
五,執行程式