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