C# 呼叫Qt編寫的控制元件
Qt 裡面有很多優秀開源的專案,由於沒有對應的.net版本,所以在C#寫的winform專案中使用就變得異常困難。首先大多數人的思路就有兩個,一是把Qt的專案編譯成COM控制元件,通過COM控制元件使用,二是把Qt的專案編譯成Dll呼叫。今天就說第二種編譯成Dll的形式。
由於Qt中有一個機制,就是MFC可以Qt混合程式設計,在MFC程式中使用QT的元件,既然QT的元件的元件可以被MFC呼叫,那也可以被C#的winform呼叫了,畢竟C#裡面經常引入WIN API的Dll進行使用。下面就要是兩個步驟:
一、Qt建立專案元件DLL。 這裡作為測試,就用Qt生成一個Widget,裡面新增一個label控制元件。
二、在C#的winform裡面進行引入Qt編譯好的dll,然後把窗體顯示出來。點選按鈕將窗體的控制代碼傳入回Dll,Dll裡面把控制元件顯示這個控制代碼的窗體上。
就這樣就顯示出來了:
相關推薦
C# 呼叫Qt編寫的控制元件
Qt 裡面有很多優秀開源的專案,由於沒有對應的.net版本,所以在C#寫的winform專案中使用就變得異常困難。首先大多數人的思路就有兩個,一是把Qt的專案編譯成COM控制元件,通過COM控制元件使
Qt編寫控制元件時遇到underMouse判斷錯誤的情況(誤判State_MouseOver)
在寫qt下的ribbon控制元件時,重繪了一個toolbutton,但是卻遇到一個問題就是在有彈出選單模式下,點選選單後按鈕還處於hover狀態,什麼意思,就是如圖所示: 原始碼見:https://github.com/czyt1988/SARibbon/blob/master
Qt編寫控制元件屬性設計器8-網路採集
一、前言 上一篇文章已經打通了資料來源之一的串列埠採集,這次要說的是網路採集,網路通訊目前用的最多的是三種,TCP/UDP/HTT
Qt編寫控制元件屬性設計器
一、前言 自從研究Qt編寫自定義控制元件以來,一發不可收拾,越多越多人有類似的需求找我定製控制元件,陸陸續續寫了上百個控制元件,目
Qt編寫控制元件屬性設計器11-匯入xml
一、前言 上一篇文章負責把設計好的控制元件資料匯出到了xml檔案,本偏文章負責把匯出的xml資料檔案匯入,然後在畫布上自動生成對應
Qt編寫控制元件屬性設計器10-匯出xml
一、前言 能夠匯出控制元件佈局和屬性設定資料到xml檔案或者其他檔案,也是一個非常實用的功能,類似於QtDesigner中把頁面設
Qt呼叫Windows Webbrowser控制元件,呼叫JS方法
說明: Qt版本為4.7.4 編譯工具為VS2008 一.需要包含的標頭檔案 #include"ExDisp.h" #include"comutil.h" #include"atlcomcli.h" #include "Mshtml.h" 庫檔名: comsup
ATL 編寫控制元件 呼叫密碼鍵盤 全過程
寫在前面:小哆把詳細過程貼出來,一方面是記錄備份,可以隨時再利用,另一方面是分享,希望後來的初學者可以輕鬆一些。 [這是一個整體,所以,今後就不在贅述其中的東西,除非是前期本人自己理解錯誤,會更正,同時特別備註] 沒有加入加密功能,MD5/DES加密都已實現,但在資源和其他的文章中有描述,
C#子視窗呼叫父視窗控制元件的委託實現
有時子窗體的操作需要實時呼叫父窗體中的控制元件操作,比如在父窗體的文字框中顯示子窗體中的輸出: 主窗體: MainForm.cs: public partial class MainForm : Form { publi
c#中如何跨執行緒呼叫windows窗體控制元件?
我們在做winform應用的時候,大部分情況下都會碰到使用多執行緒控制介面上控制元件資訊的問題。然而我們並不能用傳統方法來做這個問題,下面我將詳細的介紹。 首先來看傳統方法: public partial class Form1 : Form { public Form1(
QT獲取控制元件的內容去傳參的小發現
1://處理文字框(內容是一個連續的字串)的方法(不能直接用文字框的內容去傳參,//否則會有意想不到的錯誤發生,需要利用先拷貝到陣列,然後利用陣列去傳參), #include <QStringList> #include <QString> int arg
qt 小控制元件之textEdit
獲取 textedit 的文字內容:QString text = ui->textEdit->toPlainText(); 設定textedit 的文字內容:ui->textEdit->append(“lkf”);此方法追加內容是換行追加 char b[10]
跨執行緒呼叫Windows窗體控制元件
當我們需要處理大量資料時,為了使窗體介面不出現假死狀態,需要使用多執行緒進行處理。 當利用執行緒池ThreadPool.QueueUserWorkItem(t=>{ });進行多執行緒處理時,如果{ }中有控制元件(textbox,combox.....),程式就會報錯:不允許跨執行緒呼叫
c#窗體學習——常用控制元件介紹(一)
偷懶,轉自若雲流風,原文:https://blog.csdn.net/ruoyunliufeng/article/details/72874691 一.常用控制元件 Lable標籤→僅顯示文字; TextBox文字控制元件→文字框; Button按鈕控制元件
(轉)C# 自定義使用者控制元件
C# 自定義使用者控制元件 轉:https://blog.csdn.net/xiongxuanwen/article/details/2605109 本例是製作一個簡單的自定義控制元件,然後用一個簡單的測試程式,對於初學者來說,本例子比較簡單,只能起到拋石引玉的效
C#如何在各類控制元件中輸入/輸出資料
textBox 控制元件 輸入:只需要在textBox框中直接輸入資料即可,如圖 輸出:程式碼實現對textBox框的text屬性賦值 textBox.text="這裡輸入要輸出的值"** 得出結果如圖 label 控制元件 輸出:可以直接在label控制元件的text
CAA獲取和呼叫CATIA原生控制元件的方法
(方法源於某大佬)CAA是可以執行CATIA原生控制元件按鈕的,比如將原有的繪製草圖點的對話方塊調出來,這樣就不需要再搭建介面,直接使用預設的草圖繪製對話方塊。 但呼叫原生控制元件之前需要獲取控制元件的ID,獲取控制元件ID有2種方法: 方法1
【C#】WPF音樂控制元件
一、使用SoundPlayer SoundPlayer 只能支援WAV格式的檔案 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.
C#根據Form大小控制元件自動更改大小(自適應)
長話短說,直接上程式碼 C#的 1.軟體Form中加入ResizeBegin 或ResizeEnd 事件,或下面兩行加入Form_Load裡面 this.ResizeBegin += new System.EventHandler(this.Form1_ResizeBe
Qt獲取控制元件的大小,以及主視窗大小為什麼一樣大小
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { QPushButton *button = new QPushButton(tr("abc")); HelloWorld *m