繁体   English   中英

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

[英]How to draw a progress bar inside a list widget in Qt

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

现在似乎有一种方法可以通过创建常规进度条来实现,使用QPixmap::grabWidget()将其外观保存在QPixmap ,然后通过QListWidgetItem::setIcon()将此QPixmap作为Icon添加到QListWidgetItem 然而,这似乎是非常古怪的。

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

QListWidget每个项目都可以由您选择的QWidget表示,而不是默认呈现(文本)。 您可以通过调用QListWidget::setItemWidget()来设置它。 在这种情况下,我建议使用QProgressBar作为渲染小部件 - 您应该得到所需的结果。

QListWidget::setItemWidget()的文档:

此功能仅应用于在列表小部件项目的位置显示静态内容。 如果要显示自定义动态内容或实现自定义编辑器窗口小部件,请改用QListView和子类QItemDelegate

您可以通过将列表小部件转换为模型/视图/委托组合来实现。 然后,您可以在列表视图上设置一个覆盖绘制功能的委托,并在任何位置绘制进度条。 但是,我不知道将实际的QProgressBar小部件放入绘图区域是多么容易。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM