Qt自定義組件方法
該案例要實現一個如下圖組件,右側進度條會隨着SpinBox數值的改變而做出相應變化。功能簡單,主要是通過一個簡單例子掌握Qt組件的實現方法。
步驟1:UI設計器中,在需要放置自定義組件的位置放入Widget容器widge,並設置號Widget在UI界面的布局;
步驟2:如下如,添加新文件-->選擇C++ Class,點擊chose按鈕,進入下一界面,輸出Class name,選擇Base class為QWidget,下一步-->完成。
步驟3:在myWidget.cpp類中添加如下代碼:

1 //包含需要用到的組件 2 #include <QSpinBox> 3 #include <QProgressBar> 4 #include <QHBoxLayout> 5 6 //構造函數中添加如下 7 QSpinBox *spin = new QSpinBox(this); 8 QProgressBar *progress = new QProgressBar(this); 9 spin->setRange(0,100); 10 progress->setRange(0,100); 11 12 QHBoxLayout *hLayout = new QHBoxLayout(this); 13 hLayout->addWidget(spin); 14 hLayout->addWidget(progress); 15 16 connect(spin,SIGNAL(valueChanged(int)),progress,SLOT(setValue(int)));
步驟4:在UI設計界面,右鍵點擊在步驟1中添加的Widget容器,彈出右鍵菜單,選擇“提升為”彈出如下圖窗口:
然后在提升的類名稱中輸入“myWidget”(步驟2中新添加類的名稱,即自定義組件的對象名稱),頭文件自動補全,勾選全局包含,點擊“添加”按鈕,點擊“提升”,在右側組件屬性窗口可以看出步驟1中添加的 widget組件的類名稱變為myWidget,如下圖:
編譯運行軟件效果:
以后在需要用到該自定義組件的地方,只需像步驟4中那樣,右鍵菜單->提升為->選擇“myWidget”即可。
可以使用該方法實現自定組件,對Qt提供的組件進行功能擴充或者將不同組件組成一個組件,實現組件功能的擴展。
最后,需要注意的是,被提升的組件和自定義組件必須為相同的基類,如該例中UI界面中被提升的widget組件基類和自定義組件基類都為QWidget類。