前言
本文詳細介紹在Windows 10和Ubuntu 14.04系統下,使用Qt Creator 4.9.0創建自定義控件的過程,並在項目中使用
1 Windows
1.1 說明
Qt Creator中編譯項目使用的是MinGW/g++編譯器,而Qt提供的Qt Creator本身是由MSVC2017編譯的,所以Qt Creator中編譯的插件無法在Qt Creator中使用,下面是我安裝的Qt Creator
爲了在Qt Creator中使用自定義插件,有兩種方法,一種是也使用和Qt Creator版本相同的MSVC編譯器編譯插件,另一種就是使用MinGW重新編譯Qt Creator
我選擇安裝MSVC編譯器,需要下載安裝Visual Studio 2017
1.2 安裝MSVC
首先下載Visual Studio 2017,我下載的是社區版
下載好之後,按照提示安裝即可
1.3 安裝Qt Creator
把原來的Qt Creator卸載掉,重新下載安裝Qt Creator
安裝的時候,勾選紅框中的兩項,然後等待安裝完成
1.4 創建自定義控件
在Qt Creator點擊新建文件或項目,選擇Qt4 設計師自定義控件
之後輸入項目名稱,再點下一步,下一步
這裏需要選擇和Qt Creator編譯一致的編譯工具鏈,也就是前面安裝MSVC的原因
然後在控件類框裏輸入名字,並把所有首字母都換成大寫,注意首字母大寫,按照編碼規範命名,如果小寫後面會與實例對象的默認名稱出現衝突,會出現編譯錯誤
再下一步,下一步,直到完成
最後創建項目目錄如下
把編譯版本改爲Release
然後右鍵項目,點擊清除,執行qmake,重新構建
最後在你的編譯目錄下,會有dll文件和lib(MinGW編譯的是.a文件)
把dll和lib文件複製到Qt安裝目錄下的plugin/designer路徑下,比如我Qt Creator安裝是下面的路徑
F:\Qt5.12.3\Tools\QtCreator\bin\plugins\designer
到這裏自定義控件創建完成
1.5 自定義控件使用
重新打開Qt Creator軟件,新建一個Qt Widgets Application項目,就能在設計UI界面看到新添加的自定義控件
但是編譯的時候會報錯
Error: dependent 'SonicWidget.h' does not exist.
這個時候需要把下面這三個文件複製到你新建的項目目錄下
SonicWidget.cpp
SonicWidget.h
SonicWidget.pri
在新建的項目的.pro文件中添加下面代碼
include(SonicWidget.pri)
再編譯就沒有問題了
2 Ubuntu
在Qt Creator點擊新建文件或項目,選擇Qt4 設計師自定義控件
之後輸入項目名稱,再點下一步,下一步
然後在控件類框裏輸入名字,並把所有首字母都換成大寫
再下一步,下一步,直到完成
最後創建的項目目錄如下
把編譯版本改爲Release
然後右鍵項目,點擊清除,執行qmake,重新構建
最後在你的編譯目錄下,會找到一個so
/build-SonicWidget-Desktop_Qt_5_12_3_GCC_64bit-Release/libsonicwidgetplugin.so
把生成的so拷貝你的Qt Creator的這個目錄下,注意不同的Qt Creator版本,這個目錄可能不一樣,可以搜索designer文件夾
/opt/Qt5.12.3/Tools/QtCreator/lib/Qt/plugins/designer
重新打開Qt Creator軟件,新建一個Qt Widgets Application項目,就能在設計UI界面看到新添加的自定義控件
但是編譯的時候會報錯
make: *** No rule to make target `SonicWidget.h', needed by `ui_mainwindow.h'. Stop.
這個時候需要把下面這三個文件複製到你新建的項目目錄下
SonicWidget.cpp
SonicWidget.h
SonicWidget.pri
在新建的項目的.pro文件中添加下面代碼
include(SonicWidget.pri)
再編譯就沒有問題了