代码之家  ›  专栏  ›  技术社区  ›  bastibe

如何在qt中绘制列表小部件内的进度条

  •  4
  • bastibe  · 技术社区  · 15 年前

    我想要一个需要在 QListWidget . 与Windows Media Player CD导入类似,列表中的每个项目都应有一个进度条。

    现在似乎有一种方法可以做到这一点:创建一个常规的进度条,使用 QPixmap::grabWidget() 将其外观保存在 QPixmap 然后添加这个 像素图 作为图标到 QListWidgetItem 通过 QListWidgetItem::setIcon() . 然而,这似乎是可怕的古怪。

    您知道在列表小部件中实现进度条的更优雅的方法吗?

    2 回复  |  直到 10 年前
        1
  •  5
  •   Andre Miras    10 年前

    A中的每个项目 QListWidget 可以表示为 QWidget 而不是默认渲染(文本)。你可以通过打电话来设置 QListWidget::setItemWidget() . 在这种情况下,我建议使用 QProgressBar 作为呈现小部件——您应该得到所需的结果。

    从文件中 qlistWidget::setItemWidget()。 :

    此函数只能用于 在以下位置显示静态内容 列表小部件项。如果你想 显示自定义动态内容或 实现自定义编辑器小部件,使用 QListView 子类 QItemDelegate 相反。

        2
  •  1
  •   Caleb Huitt - cjhuitt    15 年前

    您可以通过将列表小部件转换为模型/视图/委托组合来实现。然后,可以在列表视图上设置一个委托,该委托覆盖绘制函数,并在需要的地方绘制进度条。我不知道得到一个真正的 QProgressBar 然而,小部件进入绘图区域。

    或者,您可以考虑制作自己的列表小部件,比如知道进度条的容器。