1. 程式人生 > >QT5中如何自定義視窗部件

QT5中如何自定義視窗部件

提升法
Qt Assistance:Using Custom Widgets with Qt Designer
eg.(定義一個新的QLable部件)
1、定義一個類
class Label : public base, public QLabel //可以支援多重繼承
2、在qt creator中開啟ui編輯器,拖曳一個QLable兌現,提升,輸入提升的類名Label,勾選全部包含,新增,提升成功。


外掛法
Qt Assistance:Creating Custom Widgets for Qt Designer
1、和提升法一樣,也需要先建立一個新的部件類
class AnalogClock : public QWidget
2、建立一個外掛類
class AnalogClockPlugin : public QObject, public QDesignerCustomWidgetInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface" FILE "analogclock.json")
    Q_INTERFACES(QDesignerCustomWidgetInterface)
public:
    explicit AnalogClockPlugin(QObject *parent = 0);
    //……
};
並在其cpp中實現其相關函式
3、修改.pro檔案
……
CONFIG      += plugin
CONFIG      += designer
CONFIG      += debug_and_release
TEMPLATE    = lib

QT          += widgets designer
SOURCES += \
    analogclock.cpp \
    analogclockplugin.cpp
HEADERS  += \
    analogclock.h \
    analogclockplugin.h
OTHER_FILES += analogclock.json
target.path = $$[QT_INSTALL_PLUGINS]/designer

INSTALLS += target

……

4、在專案檔案目錄下建一個空的analogclock.json檔案

5、編譯生成.dll檔案,然後將其放置到C:\Qt\Qt5.2.0\5.2.0\msvc2012_64_opengl\plugins\designer下就可以在qt designer中使用該自定義外掛了。

注:如果需要在qt Creator中使用該外掛,由於Qt SDK for Windows的兩部分是由不同編譯環境編譯而成,QtCreator是由msvc編譯,Qt庫是由mingw編譯,所以還需要將其複製到C:\Qt\Qt5.2.0\Tools\QtCreator\bin\plugins\designer,還要解決方法有以下幾種:

1) 下載QT Creator的原始碼然後在QT Creator中用MinGW編譯
2) 將外掛在Visual Studio下編譯Build the plugin with Visual Studio
3) 編譯QT Creator原始碼,但將build key checking關掉

之後就可以在 QtCreator中開啟專案的介面檔案(*.ui),此時QtCreator允許你使用整合的QtDesigner來編輯這個ui檔案,然後開啟選單項“工具->介面編輯器->About Qt Designer plugins...”即可檢視哪些外掛載入成功了,哪些未載入成功(在單獨執行的QtDesigner中,開啟“幫助->關於外掛”選單也可檢視外掛載入成功與否)。

參考文章:

http://blog.csdn.net/ubiter/article/details/12757817

http://www.yekezhong.com/704

http://blog.csdn.net/dbzhang800/article/details/6871693

http://blog.csdn.net/yangxiao_0203/article/details/6896707