我有以下QT模型/視圖框架的問題。我想在一個表視圖項中渲染一個小部件。如何在QT中的樹視圖項目中呈現複雜的小部件?
首先我想到的是使用
void QAbstractItemView::setIndexWidget(const QModelIndex & index, QWidget * widget)
但對於這個函數的文檔明確規定:
此功能只能用於 顯示靜態內容中對應 可見區域數據項目 。如果要顯示自定義 動態內容或實現自定義 編輯器窗口小部件,請改爲QItemDelegate的子類 。
所以他們建議在這裏使用代表。那麼,迄今爲止這麼好。我知道可以使用代表創建一個編輯器,這可能基本上是任何QT小部件。但是這裏存在這個問題 - 我不希望這個小部件成爲編輯器 - 我想要使用這個小部件始終呈現該項目。而不僅僅是「呈現」,我需要它具有小部件的確切行爲。
現在我想使用的小部件是一個自定義小部件,它是一些其他小部件(幾個複選框,幾個帶有一些佈局的按鈕)的容器。
我認爲解決的辦法是這樣的:
- 抓住我的自定義部件的外觀的像素圖。
- 讓委託使用此像素圖繪製自己。
- 當鼠標移動到某個項目使視圖自動啓動編輯(我不
知道如何做到這一點,但我想這是可能的) - 讓委託創建我的窗口小部件的編輯器一個物品。
此解決方案似乎可行,但對我來說味道不好。任何人都可以爲這個問題提供更優雅的解決方案?
謝謝。
你是什麼意思「我需要它具有小部件的確切行爲? – 2010-01-26 19:59:01
我的意思是與用戶進行交互 - 對其行爲做出反應 – Lev 2010-01-26 20:55:59
你想要什麼樣的交互?一個細胞,它不是,所以我有一個很難想象你真正想要在交互方式的控件。 – 2010-01-26 21:40:24