Qt實戰之將自定義插件(minGW)顯示到Qt Creator列表的方法

Qt以其強大的跨平臺特性和豐富的功能,成為眾多開發者構建圖形用戶界面(GUI)應用程序的首選框架。而在Qt開發的過程中,自定義插件能夠極大地拓展應用程序的功能邊界,讓開發者實現各種獨特的、個性化的交互效果。想象一下,如果能將這些自定義插件如同常用的控件(如QButton、QLabel等)一樣,直觀地顯示在Qt Creator的列表中,開發者在設計UI界面時就可以更加便捷地調用,大大提高開發效率,同時也能讓UI效果更加直觀地呈現在眼前。接下來,本文將詳細介紹兩種實現這一目標的有效方式,都簡單易操作!
方法一:使用MinGW版本的Qt Creator
方法二:使用Qt Designer

前提說明

在將這個自定義插件顯示到Qt Creator列表之前,有一個關鍵的前提條件需要明確,那就是插件和Qt Creator/Qt Designer所使用的編譯器必須保持一致。一般情況下,默認安裝的Qt Creator是MSVC版本,如果你使用的插件是用MinGW編譯的,那么通常情況下這個插件無法直接顯示在Qt Creator的列表中。這是因為MSVC和MinGW是兩種截然不同的編譯工具鏈,它們在生成目標文件的格式、鏈接方式等方面存在著顯著的差異,這就導致MSVC版本的Qt Creator無法直接識別和使用MinGW編譯的插件。

我這里使用的是MinGW版本的QT5.14 ,默認Qt Creator版本是4.11(MSVC),以下描述均以此基礎展開。

生成自定義插件的方法已經有很多博主進行了詳細的闡述,因此在本文中我們就不再重復這部分內容。當你成功生成自定義插件后,會得到一個重要的文件——動態鏈接庫(dll)。為了便于大家更好地理解后續的操作,我們以一個例子來說明,假設生成了一個名為“水球(waterball)”的自定義插件,最終生成的dll文件就是“waterballplugind.dll”。目的是把水球顯示在控件列表中。

查看編譯器版本

那么,如何才能知道自己的Qt Creator和Qt Designer使用的是哪種編譯器呢?下面為大家介紹具體的查看方法:

  • Qt Creator:打開Qt Creator后,我們可以在菜單欄中找到“About Qt Creator”選項。點擊它,會彈出一個窗口,在這個窗口中會顯示編譯器的相關信息。如果顯示的是MSVC,那么使用的就是MSVC編譯器。反之,MinGW編譯器。
    在這里插入圖片描述
    在這里插入圖片描述

  • Qt Designer:對于Qt Designer,我們可以在QT的安裝目錄下找到相關線索。通常情況下,Qt Designer所使用的編譯器和QT的編譯器是一致的。你可以通過查看安裝目錄下的一些配置文件或者版本信息來確認具體使用的編譯器。

  • 在這里插入圖片描述

方法一:使用MinGW版本的Qt Creator

如果你希望使用MinGW版本的Qt Creator來顯示自定義插件,有兩種途徑可供選擇。一種是自己下載Qt Creator的源碼進行編譯,這種方式雖然可以讓你根據自己的需求進行定制,但相對來說比較復雜,需要一定的技術功底和耐心。不過,還有一種更為簡單的辦法,那就是直接去下載已經編譯好的MinGW版本的Qt Creator。從4.12.0版本之后,都有Windows下的MinGW版本,而且有的有綠色版本,意味著你只需要將其解壓就可以直接使用,無需進行繁瑣的安裝步驟。在這里插入圖片描述

鏈接:https://github.com/qt-creator/qt-creator/tags
我這里下載的是4.12.0

具體的步驟:

  1. 放置dll文件:首先,我們需要將自定義插件的dll文件放置到正確的目錄下。具體來說,就是將“waterballplugind.dll”文件復制到your-QtCreator-minGW\bin\plugins\designer目錄中。這里的“your-QtCreator-minGW”指的是你解壓后的MinGW版本的Qt Creator所在的文件夾路徑。
    在這里插入圖片描述

  2. 打開設計插件窗口:完成文件放置后,打開Qt Creator,在菜單欄中依次選擇“Tools”>“Form Editor”>“About designer plugins”。這一步操作會彈出一個窗口,顯示當前Qt Creator所識別的設計插件信息。

  3. 刷新插件列表:在彈出的窗口中,我們可以看到已經加載的插件列表,Qt Creator會重新掃描插件目錄,查找新添加的插件。刷新完成后,你就可以在列表中看到剛剛添加的自定義插件了。
    在這里插入圖片描述

方法二:使用Qt Designer

如果你不想安裝MinGW版本的Qt Creator,也不用擔心,還有一種更加簡便的方法,那就是使用Qt Designer。一般情況下,Qt Designer與QT的編譯器是一致的,這就為我們顯示自定義插件提供了便利條件。

接下來,我們看看具體的操作步驟:

  1. 放置dll文件:同樣,我們需要先將自定義插件的dll文件放置到合適的位置。如果你的插件是64位的,那么就需要將“waterballplugind.dll”文件復制到64位對應的目錄里,例如D:\Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\designer。這里的路徑需要根據你自己的QT安裝目錄進行相應的調整。

  2. 用Qt Designer打開.ui文件:在你的項目中找到.ui文件,右鍵點擊該文件,在彈出的菜單中選擇“用…打開”,然后在列表中選擇Qt Designer。這樣,就會使用Qt Designer打開.ui文件,進入UI設計界面。
    在這里插入圖片描述

  3. 查看插件信息:在Qt Designer的菜單欄中,點擊“幫助”>“關于插件”。這會彈出一個窗口,顯示當前Qt Designer所識別的插件信息。

  4. 刷新插件列表:在彈出的窗口中,點擊刷新按鈕,Qt Designer會重新掃描插件目錄。刷新完成后,你就可以在列表中看到自己的自定義插件了。此時,你就可以像使用其他常用控件一樣,輕松地將自定義插件拖放到UI設計界面中,實現你想要的效果。
    在這里插入圖片描述

經過測試也可以用同樣的方法顯示QWT的組件!如上圖所示

通過上述兩種方法,你可以輕松地將自定義插件顯示到Qt Creator或Qt Designer的列表中,讓你的開發過程更加便捷高效。希望這些內容能夠對你的Qt開發工作有所幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78348.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78348.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78348.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java基礎之枚舉和注解

枚舉 簡介 枚舉:enumeration,jdk1.5中引入的新特性,用于管理和使用常量 入門案例 第一步:定義枚舉,這里定義一個動物類,里面枚舉了多種動物 public enum AnimalEnum {CAT, // 貓DOG, // 狗PIG // …

2.3java運算符

運算符 1. 算術運算符 算術運算符用于執行基本的數學運算,像加、減、乘、除等。 運算符描述示例加法int a 5 3; // a 的值為 8-減法int b 5 - 3; // b 的值為 2*乘法int c 5 * 3; // c 的值為 15/除法int d 6 / 3; // d 的值為 2%取模(取余&…

升級 Spring Boot CLI

🌟 升級 Spring Boot CLI 1?? 🔄 通過包管理器升級 使用對應包管理器命令(如 brew upgrade) 2?? 📥 手動安裝升級 遵循 標準安裝說明 注意更新 PATH 環境變量移除舊版本路徑 🔗 鏈接原文&#xff1a…

如何輕松將RS232轉為Profibus DP,提升PLC效率?

如何輕松將RS232轉為Profibus DP,提升PLC效率? 今天,我們就來聊聊一個工業自動化中常見的應用場景:如何通過興達易控RS232轉Profibus DP網關,實現流量泵與PLC(可編程邏輯控制器)的通信。這個話…

QT 連接數據庫操作(15)

文章目錄 一、本章說明二、QT連接云端數據庫實現2.1 ODBC軟件安裝及參數設置2.2 軟件代碼實現三、項目源碼文件一、本章說明 注:本節為【基于STM的環境監測系統(節點+云服務器存儲+QT界面設計)】項目第15篇文章,前面已經創建了監測軟件的登錄窗口,接下來我們將在主窗口實…

linux系統之----命令行參數和環境變量

一、命令行參數 1.main()函數的參數 在C語言中,main函數可以接收命令行參數,其標準形式為: int main(int argc, char *argv[]) {// 程序代碼return 0; } 這里我們解釋一下: argc:參數個數計數器(Argum…

解析excel中的圖片

解析excel中的圖片 前言一、pom依賴二、使用步驟1.示例數據2.代碼如下(示例): 總結 前言 初始化數據是,需要將excel中的數據解析并插入數據庫。 但是某幾列存放的是圖片,這時候怎么辦呢。 主要解決的是:獲…

Unity任務系統筆記

數據結構設計 任務基類包括的字段: string 任務內容; Transform 任務目的地; MyCharacter 任務開啟后要更新對話的NPC; MyTalkData 任務開啟后相關NPC要說的對話數據; 共同方法:開啟任務、完成任務。…

STM32的開發環境介紹

目錄 STM32軟件環境 Keil軟件在線安裝 其他軟件環境安裝 STM32開發的幾種方式 STM32寄存器版本和庫函數版本 標準外設庫的作用: STM32軟件環境 STM32 的集成開發環境(IDE):編輯編譯軟件 常見的環境: (1)KEIL&a…

【特殊場景應對9】視頻簡歷的適用場景與風險分析

寫在最前 作為一個中古程序猿,我有很多自己想做的事情,比如埋頭苦干手搓一個低代碼數據庫設計平臺(目前只針對寫java的朋友),比如很喜歡幫身邊的朋友看看簡歷,講講面試技巧,畢竟工作這么多年,也做到過高管,有很多面人經歷,意見還算有用,大家基本都能拿到想要的offe…

Linux系統性能調優技巧分享

在數字化時代,Linux 系統以其開源、穩定、高效的特性,成為服務器、云計算、物聯網等領域的核心支撐。然而,隨著業務規模的擴大和負載的增加,系統性能問題逐漸凸顯。掌握 Linux 系統性能調優技巧,不僅能提升系統運行效率,還能降低運維成本。下面從多個方面介紹實用的性能調…

關于Code_流蘇:商務合作、產品開發、計算機科普、自媒體運營,一起見證科技與藝術的交融!

Code_流蘇 🌿 名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 🌟 歡迎來到Code_流蘇的CSDN主頁 —— 與我一起&…

系統架構設計(三):質量屬性

常見分類 一般來說,質量屬性可以分為以下幾類: 類別常見質量屬性性能相關響應時間、吞吐量、資源利用率、實時性、可擴展性可用性相關可用性、高可用性(HA)、可靠性、容錯性、恢復性可維護性相關可維護性、可測試性、可擴展性、…

【鋰電池剩余壽命預測】GRU門控循環單元鋰電池剩余壽命預測(Matlab完整源碼)

目錄 效果一覽程序獲取程序內容代碼分享研究內容GRU門控循環單元在鋰電池剩余壽命預測中的應用摘要關鍵詞1. 引言1.1 研究背景1.2 研究現狀與問題1.3 研究目的與意義2. 文獻綜述2.1 鋰電池剩余壽命預測傳統方法2.2 深度學習在鋰電池壽命預測中的應用2.3 研究空白與本文切入點3.…

SpringCloud原理和機制

Spring Cloud 是一套基于Spring Boot的微服務開發工具集,它提供了在分布式系統環境下構建應用程序所需的一系列工具和服務。Spring Cloud旨在幫助開發人員快速構建一些常見的微服務模式,如服務發現、配置管理、智能路由、熔斷器、微代理、控制總線等。 …

LeetCode -- Flora -- edit 2025-04-25

1.盛最多水的容器 11. 盛最多水的容器 已解答 中等 相關標簽 相關企業 提示 給定一個長度為 n 的整數數組 height 。有 n 條垂線,第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最…

有關圖的類型的題目以及知識點(2)

1、具有5個頂點的有向完全圖有20條弧。 2、若一個有向圖用鄰接矩陣表示,則第個結點的入度就是:第i列的非零元素的個數。 3、有向圖的鄰接矩陣可以是對稱的,也可以是不對稱的。 4、設N個頂點E條邊的圖用鄰接表存儲,則求每個頂點…

正則表達式的捕獲組

是正則表達式中的一個重要概念,用于提取字符串中的特定部分 捕獲組是通過正則表達式中的圓括號 () 定義的,它的作用是: 劃分和標記:將正則表達式的一部分劃分為邏輯單元。 提取數據:從字符串中提取符合組內模式的內容…

deepseek-cli開源的強大命令行界面,用于與 DeepSeek 的 AI 模型進行交互

一、軟件介紹 文末提供程序和源碼下載 deepseek-cli一個強大的命令行界面,用于與 DeepSeek 的 AI 模型進行交互。 二、Features 特征 Multiple Model Support 多模型支持 DeepSeek-V3 (deepseek-chat) DeepSeek-R1 (deepseek-reasoner)Dee…

Java—— 五道算法水題

第一題 需求: 包裝類:鍵盤錄入一些1~100之間的整數,并添加到集合中。直到集合中所有數據和超過200為止 代碼實現: import java.util.ArrayList; import java.util.Scanner;public class Test1 {public static void main(String[]…