QT5中如何自定義窗口部件


提升法

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中,打開“幫助->關於插件”菜單也可查看插件加載成功與否)。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM