qt - 如何自定义 Qt Items 的绘制事件?
问题描述
我想写一个音乐播放器,我想实现一个这样的音乐信息列表:
ID | 喜欢 | 下载 | 姓名 | 艺术家 | 专辑 | 期间 |
---|---|---|---|---|---|---|
01 | 这里有一个按钮 | 下载按钮在这里 | 音乐名称 | ... | ... | 02:30 |
可以用QTableWidget或者QTreeWidget来实现,但是当我想在下载音乐的时候把整个item背景重新渲染成进度条,找不到这样的功能:
void QMusicListWidgetItem::paintEvent(QPaintEvent* event) {
QPainter painter(this);
int pos = this->downloadProgress / 1.0 * width();
painter.setBrush(QColor(0, 120, 248));
painter.drawRect(0, 0, pos, height());
painter.setBrush(QColor(0, 0, 0));
painter.drawRect(pos, 0, width() - pos, height());
QWidget::paintEvent(event);
}
void QMusicListWidgetItem::updateProgressSlot(float progress) {
this->downloadProgress = progress;
update();
}
我尝试使用委托,但委托的绘制功能无法重新渲染整个项目背景。它只能自定义单个单元格的显示效果。
这种需求的正确解决方案是什么?
解决方案
推荐阅读
- python-3.x - 以指定格式将日期和时间从 UTC 转换为本地
- c++ - 具有枚举专业化的模板
- javascript - 在 Windows 上导出环境变量
- sql - SQL - 每个日期的总和列
- kubernetes - 0/2 个节点可用....2 个 pod 有未绑定的立即 PersistentVolumeClaims
- ruby-on-rails - 捕获错误时不会在 Rails 事务中触发回滚
- html - 尝试删除 hr 标签行时,Html hr 标签不适用于 Outlook
- docusaurus - Docusaurus 语言下拉显示问题
- excel - 检查单元格内容是否匹配格式的公式,正则表达式?
- python - Repl.it SMTPLIB OSError: [Errno 99] 无法分配请求的地址