自定義控制項在動態新增到介面時很容易,只要new就可以了。當然在mainwindow的介面中要動態新增控制項還是有問題的,跟普通的視窗不一樣。
普通視窗只需要new乙個layout,然後將在這個layout裡新增控制項即可,如下:
qhboxlayout * layout = new qhboxlayout;
this->setlayout(layout);
layout->addstretch(1);
layout->addwidget(testlabel);
layout->addstretch(1);
而mainwindow已經自帶乙個layout了不能使用以上方法,應該這樣做:
qwidget *center = new qwidget(this);
setcentralwidget(center);
center->setlayout(layout);
在視覺化編輯控制項的操作中,所有控制項都是自帶的控制項,那麼怎麼才能像動態新增控制項那樣使用自定義的類(控制項)?
可以提公升控制項,操作如下:
這樣就操作完成了,我們再去編寫這個類,然後編譯,會發現在輸出路徑有這個檔案(ui_mainwindow.h),此檔案裡之前qlabel控制項已經換為我們定義的類名testlabelsub:
編寫完這個自定義類後,編譯輸出則發現此控制項已經變為自定義的類。
提公升的時候發現,只能寫類名不能寫包名,而且在編譯後的(ui_mainwindow.h)一直都是沒有包的引用。
如果類寫在包裡,編譯則會報路徑無法找到的錯誤。
如果一定要把類寫在包裡,則有以下解決方法:
手動修改(ui_mainwindow.h)關於這個自定義類的路徑:
問題是重新構建之後又要重新修改。
把路徑在.pro檔案裡include進去:
includepath +=./com
就可以了。
之前自己寫的自定義類,有的沒有給基類傳入父視窗,因為有的只在啟動時生成即可,不存在銷毀,所以也無所謂,用這種寫法導致在寫這個提公升類的時候,一直無法顯示,最後還是無意中試出來了:
這個不傳入控制項無法顯示。
QT 5 9 8 UI介面控制項介紹
布局管理器 所謂 gui 介面,歸根結底,就是一堆元件的疊加。我們建立乙個視窗,把按鈕放上面,把圖示放上面,這樣就成了乙個介面。在放置時,元件的位置尤其重要。我們必須要指定元件放在 以便視窗能夠按照我們需要的方式進行渲染。這就涉及到元件定位的機制。qt 提供了兩種元件定位機制 絕對定位和布局定位。絕...
Qt中QWidget與其他控制項預設尺寸的注意事項
qwidget預設尺寸 640 480 其他控制項預設尺寸 100 30 但是,new的時候qwidget有不同情況,以繼承自qwidget的qhalconwindow類為例。qhalconwindow qhalconwindow qwidget parent qwidget parent 在其他類...
關於Qt5 10的UI中自己做的示波器控制項問題
最近自己造輪子,基於qlabel做了乙個類似於示波器的顯示介面,如下圖,做完之後我把它作為乙個控制項,可以在ui設計介面將qlabel提公升為這個圖表型別,這個過程中我遇到了乙個問題,就是提公升後的控制項的大小設定出現了異常,不能根據介面大小跟隨layout變化 我重寫了resizeevent 也不...