2011-03-18 80 views
0

幾天來,我一直在與QT,模型,視圖,代表進行對抗。我希望從架構上知道,我在正確的軌道上。如果你可以對此發表評論,那麼你非常歡迎。QT,架構:「好友列表」的解剖

目標:

可滾動的好友列表,類似於Skype擁有。以下要求必須得到支持:

  1. 完全控制一行圖紙 。通常, 的圖標可變寬度基於 的行狀態。

  2. 可變高度的行, 通常,更詳細的行顯示 爲選定的行。

  3. 爲所選行添加了控件(動作 按鈕)。
  4. 在 分揀列表的完全控制
  5. 不同 類型的行通常,好友或 文本佔位符與表示好友 直屬的類型的標籤 (例如「離線 聯繫人」, 「在線聯繫人」)。

我的想法如下:

  1. 使用ListView控件 使用派生QAbstractList模型來保存好友的數據而QListView。它將有一個std :: vector數組和一個「MyContactClass」集合。每個「MyContactClass」實例將代表一個好友,與其相關的數據字段
  2. 使用QAbstractItemDelegate派生類來處理行的繪畫和sizeHinting
  3. 胡克模型,並委託給而QListView
  4. 填充模型...
  5. 有人口而QListView

我知道有很多細節需要這一點,它是不平凡的。我想問什麼是:項目#1到#6在架構上正確地給予我想要做的事情。

+0

你的意思是要求1-5還是你的想法1-5? – Chris 2011-03-18 23:37:39

回答

1

我在Qt中做了很多模型/視圖編程。你的方法對我來說似乎是對的。

將這些操作按鈕添加到委託可能會非常棘手。 QAbstractItemDelegate對自定義小部件不太好,但對樣式選項控件適用。

當然,您需要註冊您的MyContactsClass與MOC,以便它可以在QVariant中使用。

除此之外,看起來不錯。