準備為我們的5軸工作台定義一下控制介面
enum axisid ;
class stagecontrol:public qobject;class stagecontrol:public qobject
; //q_enums(axisid)
q_declare_flags(axisids, axisid)
q_flags(axisids)
stagecontrol()}}
};
結果如下:
name: axisidsaxis_x
axis_y
axis_z
axis_r
axis_t
有點意思,我們可以對比一下,只使用 q_enums 時的結果
name: axisidaxis_x
axis_y
axis_z
axis_r
axis_t
呵呵,兩個都用的呢?
name: axisidaxis_x
axis_y
axis_z
axis_r
axis_t
name: axisids
axis_x
axis_y
axis_z
axis_r
axis_t
相當於元物件系統中有了兩個qmetaenum物件!!
瞅瞅moc生成的檔案
當q_enums和q_flags同時使用時,確實是生成兩個qmetaenum物件。
static const uint qt_meta_data_stagecontrol = ;static const char qt_meta_stringdata_stagecontrol = ;
一時間突然明白,為何在manual中
enum qt::windowtypeflags qt::windowflags
或
enum qt::windowstateflags qt::windowstates
總是成對的介紹!
原來,潛意識中,總是覺得windowtype的列舉值全是widget/window這種單值,而dialog屬於windowflags
enum windowtypeq_declare_flags(windowflags, windowtype)
原來根本就沒有這種區別!
回到一開始的例子,我最常用的是x、y、r這三個軸,於是,我可以這樣來定義enum
enum axisid;
亂七八糟,暫記於此。
QT之Qt之Q PROPERTY巨集理解
qt中的q property巨集在qt中是很常用的,那麼它有什麼作用呢?qt提供了乙個絕妙的屬性系統,q property 是乙個巨集,用來在乙個類中宣告乙個屬性property,由於該巨集是qt特有的,需要用moc進行編譯,故必須繼承於qobject類。q property type name r...
Qt之Q OBJECT巨集的作用
只有加入了q object,你才能使用qt中的signal和slot機制。凡是qobject類 不管是直接子類還是間接子類 都應該在第一行 寫上q object。不管是不是使用訊號槽,都應該新增這個巨集。這時候,就必須在標頭檔案派生類的時候,首先像下面那樣引入q object巨集 class mym...
QT相關的FAQ及Trouble Shooting
1,qwidget的管理 一般情況下,qwidget獨立建立堆物件時,要手工維護其消亡,但qwidget如果有父widget 不是繼承關係,而是指包含關係,比如乙個qtabwidget加入了乙個qwidget做為tab,這個qwidget的父就是qtabwidget 父widget將會在銷毀時,de...