【问题标题】:How to show icons without text in QListWidget?如何在 QListWidget 中显示没有文本的图标?
【发布时间】:2011-11-05 23:07:36
【问题描述】:

我只想在QListWidget 中显示图标。我将文本设置为空字符串。当我选择一个图标时,我在文本位置看到一个空的选定方块。看截图:

我怎样才能摆脱这个空白?!

【问题讨论】:

    标签: qt qt4 icons qlistwidget


    【解决方案1】:

    使用 NULL 代替

    ui->listWidget->addItem(new QListWidgetItem(QIcon(":/res/icon"),NULL));

    【讨论】:

      【解决方案2】:

      如何在 QListWidget 中添加图标?这应该可以正常工作(我正在从资源文件中加载图标):

      ui->listWidget->addItem(new QListWidgetItem(QIcon(":/res/icon"), ""));
      

      编辑

      从截图中我看到你的问题是空字符串对应的图标下方有一些空白。您可以通过将列表小部件项的字体设置为非常小的尺寸来破解此行为。

      QListWidgetItem *newItem = new QListWidgetItem;
      QFont f;
      f.setPointSize(1); // It cannot be 0
      newItem->setText("");
      newItem->setIcon(QIcon(":/res/icon"));
      newItem->setFont(f);
      ui->listWidget->addItem(newItem);
      

      这样就可以了。但是,您也可以使用 setItemWidget 函数并使用自定义设计的小部件,或者使用 QListView 和委托。

      【讨论】:

      • 显示一个空白区域而不是文本。当您选择图标时,该空间被选中。我想摆脱它。更正了我的问题。
      • 设置小字体并不能解决问题。选择后仍然可以看到一个小矩形。 setItemWidget 工作很奇怪,它仍然显示一个空矩形。我添加了带有像素图的 QLabel 作为小部件。最后的希望是代表。可以发个代码sn-p,如何实现我的目标?
      • 查看question。您必须重新实现绘画功能和尺寸提示。在您的情况下,您只会以您想要的方式添加一个图标。然后你只需拨打setItemDelegate
      【解决方案3】:

      我的解决方案是在具有图标大小的项目上调用 setSizeHint()。我添加了一点填充,因为没有它选择框被切断了。

      QListWidgetItem * pItem = new QListWidgetItem(icon, "");
      pItem->setSizeHint(iconSize + QSize(4,4));
      listWidget->addItem(pItem);
      

      【讨论】:

        【解决方案4】:

        如果您确实想要存储文本(作为标识符)但不显示它,另一种解决方案是不在创建者中为 QListWidgetItems 设置任何文本,而是存储文本data 部分中的详细信息。

        如果您之后将文本放入,无论如何您将使用QListWidgetItem::setText(const QString &text),您只需将其更改为QListWidgetItem::setData(int role, const QVariant &value),实际上将是QListWidgetItem::setData(Qt::UserRole, const QString &text),并依赖QString 可转换为QVariant。不幸的是,反过来也有一些缺点:

        • 要检索值,您需要将QVariant 显式转换回QString - 使用QListWidgetItem::data(Qt::UserRole)->toString()
        • 搜索特定匹配 Qt 不提供find 方法来识别匹配特定角色QListWidget 成员的索引,尽管它确实用于原始文本 - 不像 QComboBox,它同时具有 findXXXX 方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多