2012-03-28 92 views
0

我的自定義QListView具有繪製項目的委託。我想爲某些行項目(如QLineEdit)添加一個實時控件,該控件始終存在於行中,並且會自動與列表一起正確滾動。Qt:自定義QListView和實時控件

由於項目不是小部件,因此我無法將控件指定爲「項目」的子項,因此滾動會將控件留在QListView小部件中的固定位置。

還有別的辦法嗎? 這甚至可能嗎?

回答

0

正常情況下,當發生QEvent::EnterEditFocus事件時代理人創建(和定位)編輯窗口小部件,然後在發生後續QEvent::LeaveEditFocus並將數據發送回模型時將其銷燬。代表應該重新繪製新的模型數據。

您可以擴展您的「活」控件的含義嗎?

爲什麼你想要一個編輯小部件不斷打開?我認爲一個更好的方法是創建一個以您想要的方式繪製正常視圖(例如Qt::DisplayRole)的委託。假設你正確地創建你的子類視圖,委託應該在模型改變時更新。

如果你真的想這樣做,你要問什麼,雖然,我懷疑你可能能夠通過:

Delegate Classes的讀儘管第一部分是Model/View編程入門的一部分。如果你還沒有,Spin Box Delegate ExamplePixelator Example也值得研究。

+0

我的listView中的每一行都類似於即時通訊的行。每一行代表一個聯繫人。它也有一些按鈕。這些按鈕是「手繪的」,因爲您不能將QPushButton放在listviewRow上。滾動根本不起作用。某些聯繫人行需要輸入密碼才能使用該按鈕。我想在其中一個按鈕旁邊放一個小編輯框。並且我不希望用戶「雙擊/單擊」以使編輯框出現在那裏。我希望編輯框始終在那裏,並使用listView正確滾動。 – JasonGenX 2012-03-29 15:57:24

+0

這聽起來像這是一個更適合自定義QWidgets而不是QListView的問題。或者也許是QTableView或QAbstractItemView的子類。 – 2012-03-29 16:16:16

+0

也許。我只是沒有時間去發明一個完整的「QListView,它能夠託管每行QWidgets」概念。我希望能有一種方法來完成目前的基礎設施。 – JasonGenX 2012-03-29 21:26:17