在Qt QAbstractItemDelegate 类中,有一个例子 Package Manage
里面通过自定义委托,继承QStyledItemDelegate.,实现了绘制进度条显示数据的功能。
但是由于这里面的进度条是QStyleOptionProgressBar,不是一个Widget。
后期如果Model中的数据有变化,这些进度条的值如何随时更新变化呢?????
进度条例子
- C/C++ code
void WidgetDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { if (index.column() == 1) { int progress = index.data().toInt(); QStyleOptionProgressBar progressBarOption; progressBarOption.rect = option.rect; progressBarOption.minimum = 0; progressBarOption.maximum = 100; progressBarOption.progress = progress; progressBarOption.text = QString::number(progress) + "%"; progressBarOption.textVisible = true; QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOption, painter); } else QStyledItemDelegate::paint(painter, option, index);
------解决方案--------------------
你为什么不把它变成一个类的变量呢? 你是在paint里面做这样的事?难怪我说你的局部变量怎么可以一直显示在上面,真猛,你运行的时候看看你的CPU占用率高不高。
------解决方案--------------------