一、前言 控件能加載拖曳拉伸了,這些都是基本的前提工作,接下來的重點就是要動態加載選中控件的屬性了,Qt的屬性機制那是異常的強大,只能用強大到爆來形容,Qt中編寫自定義控件,如果屬性都用Q_PROPERTY來描述過,那都支持整個Qt生態環境中的各種應用場景的加載,比如widget的屬性設計 ...
一 前言 加載插件是整個屬性設計器的第一步要打通的功能,插件中的控件都加載不了,后面就別搞別玩下去了沒法玩的,要從一個動態庫中加載出來控件,肯定需要用到反射機制,以前做.NET開發的時候就覺得反射這個東西相當強大,居然可以讀取DLL加載出來控件,現在用Qt,發現Qt也有反射機制,也許這東東可能各大開發語言平台都具備吧,Qt反射對應的類叫QMetaObject,着實強大,其實整個Qt開發框架也是超級 ...
2019-09-09 09:50 0 745 推薦指數:
一、前言 控件能加載拖曳拉伸了,這些都是基本的前提工作,接下來的重點就是要動態加載選中控件的屬性了,Qt的屬性機制那是異常的強大,只能用強大到爆來形容,Qt中編寫自定義控件,如果屬性都用Q_PROPERTY來描述過,那都支持整個Qt生態環境中的各種應用場景的加載,比如widget的屬性設計 ...
一、前言 自從研究Qt編寫自定義控件以來,一發不可收拾,越多越多人有類似的需求找我定制控件,陸陸續續寫了上百個控件,目前已超過150個,於是逐漸衍生了另外一個需求,提供一個控件屬性設計器,類似QtDesigner一樣,可以方便的拖曳控件,改變屬性,立即應用,並導出到文件方便下次直接加載,這個設計 ...
一、前言 插件控件加載了,拖曳控件也實現了,接下來就是一個最難點了,跟QtDesigner或者其他開發環境一樣,能夠任意自由的拉伸控件大小,移動位置,為了這個功能,還特別編寫了一個控件來實現這個功能,名字叫SelectWidget描點跟隨窗體控件,大致的原理就是安裝事件過濾器,在生成控件 ...
一、前言 上一篇文章把插件加載好了,並且把插件中的所有控件都顯示到了列表框中,這次要做的就是實現拖曳控件的功能,用戶選擇一個控件拖曳到畫布上,松開,在松開位置處自動實例化該控件,這個需要用到dropEvent和dragEnterEvent事件,重新實現這兩個事件,對拖曳的對象進行過濾並調用函數 ...
一、前言 之前就提過,Qt的屬性機制強大到爆,這次的動態屬性功能就是要讓他爆,很難想象只要一行代碼即可widget->setProperty("value", value);沒錯就這么簡單,調用弱屬性機制,可以直接控制控件中的所有屬性,設計這個機制的人絕對是天才,直接跪了。至於具體底層 ...
一、前言 在上一篇文章中就提到過,使用qtpropertybrowser來加載屬性,對應加載到的屬性是英文的,也就是控件類中Q_PROPERTY描述的變量名稱,如何變成中文或者其他語言顯示呢?這個就需要研究qtpropertybrowser的源碼了,通過研究發現 ...
一、前言 用戶屬性是后面新增加的一個功能,自定義控件如果采用的Q_PROPERTY修飾的屬性,會自動識別到屬性欄中,這個一般稱為控件屬性,在組態設計軟件中,光有控件本身的控件屬性還是不夠的,畢竟這些屬性僅僅是以外觀為主,並不能表示某個設備的屬性,所以需要除了這個控件屬性以外增加用戶屬性來存儲 ...
一、前言 數據源是組態軟件的核心靈魂,少了數據源,組態就是個花架子沒卵用,一般數據源有三種方式獲取,串口、網絡、數據庫,至於數據規則是什么,這個用戶自己指定,本設計器全部采用第一個字節作為數據來演示。 串口通信在大量的工業控制領域用的最多,就因為穩定兩個字,長期霸占了幾十年的通信規則,現在 ...