對動態元物件的其他支援

2021-09-02 05:52:34 字數 1340 閱讀 8740

pyqt5 為qobject的任何python子類建立乙個qmetaobject例項,而不需要相當於qt的巨集。大多數qmetaobject都是通過定義訊號,插槽和屬性自動填充的,如前面部分所述。在本節中,我們將介紹填充qmetaobject的其餘部分的方式 。q_object

版本5.11中的新功能。

q_enum()q_flag()功能宣告發表在列舉型別和標誌型別分別 qmetaobject。pyqt5中的典型用法是宣告可以由qml使用的符號常量,以及可以在qt designer中設定的屬性型別。

每個函式都使用python型別物件或enum實現列舉或標誌型別的物件。例如:

fromenumimportenumfrompyqt5.qtcoreimportq_enum, q_flag, qobjectclassinstruction(qobject):classdirection(enum):

up, down, left, right = range(4)

q_enum(direction)classstatus:

null = 0x00

urgent = 0x01

acknowledged = 0x02

completed = 0x04

q_flag(status)

5.2版中的新功能。

還提供了(現已棄用)q_enums()q_flags()功能。它們與上述不同之處在於它們可以在一次呼叫中定義多種型別。

q_classinfo()函式的使用方式與qt的同名巨集相同,即從類的定義中呼叫它,以指定放置在類的qmetaobject中的名稱/值對 。

例如,qml使用它來定義類的預設屬性:

frompyqt5.qtcoreimportq_classinfo, qobjectclassbirthdayparty(qobject):

q_classinfo('defaultproperty', 'guests')

Objective C物件之類物件和元類物件

作為c語言的超集,物件導向成為objective c與c語言的最大區別,因此,物件是objective c中最重要的部分之一。目前物件導向的語言有很多,objective c中的物件又和其他語言中的物件有什麼區別呢?下面來簡單介紹objective c中物件的實現。1 objective c中的類 ...

物件切割,指標和引用對多型的支援

物件切割 一般來說派生類分配的儲存空間大於基類分配的儲存空間,如果不通過指標和引用而是直接將派生類物件複製給基類物件就會造成切割。切割導致無法通過基類呼叫基類的成員函式。例子 class bear public zooanimal bear b zooanimal za b za.rotate 呼叫...

oracle對top的支援

1.在oracle中實現select top n 由於oracle不支援select top語句,所以在oracle中經常是用order by跟rownum的組合來實現select top n的查詢。簡單地說,實現方法如下所示 select 列名 列名 from select 列名 列名 from ...