2013-03-27 36 views
0

我使用QTreeView來可視化我的對象屬性。 它像Qt設計器中的屬性編輯器。我有各種值,布爾,文本,顏色值,枚舉,浮點數,整型,文件名等。QTextEdit和QPushButton在一個QAbstractModelItem中

我使用coustom模型來保存所有對象值並通過coustom委託顯示它。因此,委託人檢測數據的種類並具有特殊的編輯表示,例如,用於int/float的旋轉框和用於bool的複選框。 目前,我的委託人爲spinbox創建編輯器,並覆蓋用於表示值的paint()函數複選框。

現在我想允許用戶以兩種方式編輯值。用戶應該使用正常的文本字段進行編輯,複製/粘貼等以更改值或按下按鈕打開QFileDialog並選擇正確的文件。
它應該看起來像這樣的畫面:

image http://oi48.tinypic.com/wldvub.jpg

我怎樣才能做到這一點?
我需要一個文本框和一個按鈕來打開QFileDialog。

我使用Qt 5.0。 THX的幫助

+0

您是否想要在編輯狀態下顯示文本字段和按鈕,或者是否顯示和編輯該文本字段和按鈕? – cmannett85 2013-03-27 14:21:07

+0

在最好的情況下,顯示和編輯。 – norca 2013-03-27 14:36:59

回答

0

你必須使用自定義窗口小部件,你可以在代碼中創建一個像這樣沿着這些線路的委託的createEditor()函數/東西:

QFrame *frame = new QFrame(); 
frame->setLayout(new QHBoxLayout()); 
frame->layout()->addWidget(new QLineEdit()); 
frame->layout()->addWidget(new QToolButton()); 
return frame; 

或者你可以創建一個自定義窗口小部件與設計師並返回其中之一。

+0

我已經想到了這樣的事情。然後我嘗試實現這一點,並堅持stardelegate expample。我不知道QFrame之前,我看看這個班。 – norca 2013-03-27 15:30:55