日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt官方文档阅读笔记-QStyledItemDelegate Class描述

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt官方文档阅读笔记-QStyledItemDelegate Class描述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對應的原文為:

?

筆記如下:


簡單描述:

QStyledItemDelegate提供了展示和編輯item的功能,讓這兩種功能更有個性化。QStyledItemDelegate是所有Item View的默認委托。

【注意:QStyledItemDelegate也是Qt模型/視圖框架的一部分】

這里有一個邏輯:每一個Item分配一個ItemDataRole,每一個item都存一個QVariant(我擦,這個有意思,感覺相當的流氓,感覺存這個就和Java里的存Object,屏蔽泛型編程差不多了)。QStyledItemDelegate也為用戶提供了對普通數據類型的展示和編輯,如bool,int,string。

為了使得數據描述更為準確,Qt為各種數據角色提供了各種各樣的委托,為的是讓各種模型中的數據有各種的委托。如下所示:

【注意:編輯功能是用QItemEditorFactory創建的】


QItemEditorFactory提供了一個靜態的方法(C++里面應該叫函數吧),為每一個要編輯的數據提供委托。(下面是關鍵點要注意了)這個靜態方法有2種,一種是使用自定義工廠setItemEditorFactory()或使用默認工廠QItemEditorFactory::setDefaultFactory()。這里被編輯的數據是用EditRole存儲的。QItemEditorFactory類提供了item編輯工廠高級介紹。Color Editor Factory這例子展示了如何去創建自定義編輯工廠。

如何子類化QStyledItemDelegate:

如果委托不支持重繪數據類型,那么就要考慮定做一個item,為此需要子類化QStyledItemDelegate,并且重寫paint()和sizeHint()這兩個函數,每一個的item都需要調用paint()和sizeHint()函數,可以為每一個item定義一個效果。

當重新實現了paint()后,將會處理一種特定的數據類型,并且用他的超類進行實現。

?

  • 如果要實現自定義委托編輯功能而不想用編輯Item的給出,就必須重寫下面的這4個函數.createEditor():返回一個widget這個widget用于從模型中改變數據,并且重新實例化了自定義編輯的行為。
  • setEditorData():提供了數據編輯的功能;
  • updateEditorData():確保編輯器在itemview的正確顯示;
  • setModelData():返回更新后的模型數據。
  • 官方提供了一個Star Delegate的例子。

    QStyledItemDelegate與QItemDelegate

    QItemDelegate:當使用當前的樣式(Qt自帶的那種,如Windows XP等風格),就用他;
    QStyledItemDelegate:當要使用Qt style sheets這個屌玩意的時候就用他。

    ?

    下一篇將會解析

    Star Delegate Example這個官方實例

    總結

    以上是生活随笔為你收集整理的Qt官方文档阅读笔记-QStyledItemDelegate Class描述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。