單擊 qt creator 的 「幫助」–>「關於 qt creator」選單,出現的對話方塊會顯示 qt creator 的版本資訊和使用的編譯器資訊。qt5.9的 qt creator 是基於 msvc2015 32bit 編譯器編譯的。
參見 qt5 + msvc2015編譯器 環境配置 (不安裝vs)
本案例名稱為 qwbattery
唯一需要注意的就是:
一般用預設生成的即可。
qwbattery.h
#ifndef qwbattery_h
#define qwbattery_h
#include
#include
#include
#include
#include
/** * @brief qdesigner_widget_export 巨集:用於將自定義元件類從外掛程式匯出給 qt designer 使用,
* 必須在類名稱前使用此巨集
*/class
qdesigner_widget_export qwbattery :
public qwidget
;#endif
qwbattery.cpp
#include
"qwbattery.h"
qwbattery::
qwbattery
(qwidget *parent)
:qwidget
(parent)
void qwbattery::
setpowerlevel
(int pow)
int qwbattery::
getpowerlevel()
void qwbattery::
setwarnlevel
(int warn)
int qwbattery::
getwarnlevel()
qsize qwbattery::
sizehint()
void qwbattery::
paintevent
(qpaintevent *event)
else
painter.
setbrush
(brush)
; painter.
setpen
(pen);if
(powerlevel >0)
qfontmetrics textsize
(this
->
font()
);qstring powerstr = qstring::
asprintf
("%d%%"
, powerlevel)
; qrect textrect = textsize.
boundingrect
(powerstr)
; painter.
setfont
(this
->
font()
);pen.
setcolor
(colorborder)
; painter.
setpen
(pen)
; painter.
drawtext(55
- textrect.
width()
/2,23
+ textrect.
height()
/2, powerstr)
;}
外掛程式在 release 模式下編譯,生成檔案:qwbatteryplugin.dll 和 qwbatteryplugin.lib,外掛程式在 debug 模式下編譯,生成檔案:qwbatteryplugind.dll 和 qwbatteryplugind.lib,兩個的區別就是 debug 編譯生成的檔名末尾多乙個 「d」 字母。將 qwbatteryplugin.dll 和 qwbatteryplugind.dll 動態鏈結庫檔案複製到下面兩個目錄:
d:\qt\qt5.9.0\tools\qtcreator\bin\plugins\designer
d:\qt\qt5.9.0\5.9\msvc2015\plugins\designer
重啟 qt creator,使用 ui 設計器設計視窗時,在左側的元件面板會看到增加乙個 my widget 分組,分組裡面有乙個元件 qwbattery:
1、新建乙個專案 batteryuser,設計介面如下:
編輯 滑塊控制項和電池控制項的槽函式:
void mywidget::
on_qwbattery_powerlevelchanged
(int arg1)
void mywidget::
on_horizontalslider_valuechanged
(int value)
2、在專案的源檔案目錄下建立乙個 include 子目錄,將 qwbattery 類定義的標頭檔案 qwbattery.h 、外掛程式的 debug 和 release 兩種模式編譯生成的庫檔案 qwbatteryplugind.lib 和 qwbatteryplugin.lib 複製到此目錄下,專案在編譯鏈結時需要此標頭檔案和庫檔案。
3、導入庫檔案
方式一:引導方式
右擊專案,在彈出的選單中選擇 「新增庫…」 ,選擇庫型別時,選擇 外部庫「external library」;選擇庫檔案位置時,就把 include 資料夾下的 qwbatteryplugin.lib 選中即可,會自動填充 「include path」編輯框,選擇 windows 平台,連線方式選擇 dynamic ,勾選下方 add 「d」 suffix for debug version,表示在 debug 版本的庫名稱後面新增乙個字母 「d」,以便編譯器自動區分 release 和 debug 版本的庫檔案。
方式二:手動**匯入
修改專案檔案 batteryuser.pro,新增:
#設定新增的庫檔案,會判斷當前專案時以 debug 還是 release 模式編譯
win32:
config
(release, debug|release)
: libs +
=-l$$pwd/include/
-lqwbatteryplugin
else
:win32:
config
(debug, debug|release)
: libs +
=-l$$pwd/include/
-lqwbatteryplugind
#頭檔案目錄
includepath +
= $$pwd/include
#專案依賴目錄
dependpath +
= $$pwd/include
4、執行專案
此時可正常編譯,但是無法正常執行,一旦執行,會直接崩潰,且無報錯資訊。
(1)第一步:編譯
在 debug 和 release 兩種模式下分別編譯。
(2)第二步:複製外掛程式的 dll 檔案
將外掛程式在 debug 和 release 兩種模式下編譯生成的 qwbatteryplugin.dll 和 qwbatteryplugind.dll 動態鏈結庫檔案分別複製到專案編譯的兩個資料夾下:
e:\qt_demo\build-batteryuser-desktop_qt_5_9_0_msvc2015_32bit-debug\debug
e:\qt_demo\build-batteryuser-desktop_qt_5_9_0_msvc2015_32bit-release\release
(3)第三步:執行
二十三、qt5.9 + msvc2015編譯器 環境配置 (不安裝vs)
二十四、qt lnk1158 無法執行rc.exe 解決方法
二十六、qt之使用 msvc編譯器輸出中文亂碼的問題
(二十一)自定義Tabbar
1.隨便找乙個目錄 比如component 2.在component裡建立乙個資料夾 我們用的是官方的 把 複製到我們新建的tabbar中 包括js,wxml,json,wxss 現在tabbar就沒有了 現在我們要是在那個頁面用 就在那個頁面社會 比如 index頁面 tabbar的顏色自己定義就...
Qt之自定義QEvent
2 如何定義個事件型別。qt中提供了 static int qevent registereventtype int hint 1 用來定義程式中唯一的事件型別。4 postevent和sendevent的區別 1 sendevent使用notify 函式直接給receiver傳送事件。不支援多執行...
Qt練習之自定義時鐘
在qtproject中自學qt時,上面有乙個例項是編寫時鐘的,其中用到了qtimer,訊號和槽以及事件的知識,是練習qt的好例子,本人在例項上新增了秒鐘的設定,從而更加像乙個使用的時鐘錶了,下面展示一下執行結果。下面我來和大家分享一下,具體實現,類analogclock是自定義類,它繼承於qwidg...