2015-05-18 139 views
1

我找不到了,QT如何選擇使用Qt對象中是否有屬性,用作默認值屬性?

QDataWidgetMapper::addMapping (QWidget * widget, int section) 

的實況映射到一個模型中的插件的相應的屬性(4.8)告訴一些關於用戶屬性,但哪一個?

在示例中,text屬性用於行編輯,spin-box的current-index。 Qt對象中是否有屬性,用作默認值屬性?如果是這樣,比我錯過了一些必要的東西。

+1

是的,小部件通常有一個用戶屬性。 ['USER'屬性指示該屬性是否被指定爲該類的面向用戶或用戶可編輯的屬性。通常,每個類只有一個USER屬性(默認爲false)。例如,QAbstractButton :: checked是(可選)按鈕的用戶可編輯屬性。請注意,QItemDelegate獲取並設置一個小部件的USER屬性.'](http://doc.qt.io/qt-4.8/properties.html#qt-s-property-system) – thuga

+0

我不確定我理解你的問題,但[請檢查此](http://doc.qt.io/qt-5/properties.html)注意有些屬性有一個'RESET'方法來恢復默認值。 –

+1

「用戶屬性,但哪一個」只有一個,或沒有。有多個屬性,並且至多可以聲明其中一個屬性是用戶屬性。 –

回答

3

對於QLineEdit的,文本屬性被使用,因爲QLineEdit的聲明如下:

class Q_WIDGETS_EXPORT QLineEdit : public QWidget 
{ 
    Q_OBJECT 
    Q_PROPERTY(QString inputMask READ inputMask WRITE setInputMask) 
    Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged USER true) 
    Q_PROPERTY(int maxLength READ maxLength WRITE setMaxLength) 
    ... 

注意,Q_PROPERTY文本有其用戶屬性設置爲true。根據文檔(http://doc.qt.io/qt-4.8/properties.html

USER屬性指示屬性是否被指定爲該類的面向用戶或用戶可編輯屬性。通常,每個類只有一個USER屬性(默認爲false)。例如,QAbstractButton :: checked是(可選)按鈕的用戶可編輯屬性。請注意,QItemDelegate獲取並設置小部件的USER屬性。