簡體   English   中英

有沒有辦法在沒有文本的 QListView 中顯示圖標?

[英]Is there a way to display icons in QListView without text?

使用 QListView 和 QStandardItemModel,是否可以在列表視圖中顯示圖標而不顯示關聯文本? QStandardItem 定義如下:

QStandardItem ( const QIcon & icon, const QString & text ) 

所以它似乎需要某種文本字符串 - 我只想要顯示圖標。 如果我使用以下代碼,我會按要求獲得圖標,但我也會在它們下方獲得一個空白文本元素。 我不要這個。

ImageListView->setViewMode( QListView::IconMode );
{
     QStandardItemModel *iStandardModel = new QStandardItemModel(this);
     QStandardItem* item1 = new QStandardItem(QIcon("images/shield-280x280.png"),"");
     QStandardItem* item2 = new QStandardItem(QIcon("images/shield-280x280.png"),"");

     iStandardModel->appendRow(item1);
     iStandardModel->appendRow(item2);
     ImageListView->setIconSize(QSize(100,100));
     ImageListView->setUniformItemSizes(true);
     ImageListView->setDragDropMode(QAbstractItemView::DropOnly);
     ImageListView->setModel(iStandardModel);
}

如果我在構建自定義模型時遇到麻煩,我能解決這個問題嗎?

為了擴展已接受的答案,這是最簡單的委托,它可以選擇隱藏項目的文本(顯示角色),但在其他方面就像默認委托一樣。 這適用於任何QAbstractItemView子類(和QComboBox )和任何QAbstractItemModel子類。 如果人們寧願為其他視圖(或任何原因)保持顯示角色非空,這是一個更好的解決方案。

class ItemDelegate : public QStyledItemDelegate
{
  public:
    using QStyledItemDelegate::QStyledItemDelegate;

    // simple public member to toggle the display role (create getter/setter if you prefer)
    bool displayRoleEnabled = false;

  protected:
    void initStyleOption(QStyleOptionViewItem *o, const QModelIndex &idx) const override
    {
      QStyledItemDelegate::initStyleOption(o, idx);
      // to hide the display role all we need to do is remove the HasDisplay feature
      if (!displayRoleEnabled)
        o->features &= ~QStyleOptionViewItem::HasDisplay;
    }
};

是的,你可以。

首先創建一個與列表視圖關聯的委托。然后,

在將元素插入列表視圖時,使用 set-data 函數插入圖標,並在委托的繪制事件中處理繪圖圖標。 我希望它清楚。

如何在QListWidget中顯示沒有文字的圖標?

從上面的帖子中,你可以使用NULL來擺脫那個空白空間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM