当前位置: 代码迷 >> QT开发 >> 请教怎么修改QStyledItemDelegate中进度条的值?
  详细解决方案

请教怎么修改QStyledItemDelegate中进度条的值?

热度:89   发布时间:2016-04-25 04:30:45.0
请问如何修改QStyledItemDelegate中进度条的值???
在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占用率高不高。
------解决方案--------------------
探讨
引用:
QStyleOptionProgressBar progressBarOption;

定义成全局变量。。。



定义成全局变量,是走弯路了。

Qt 的MVC架构已经完成了我说的这个功能,是我的返回值写错了。
这个日志上,有一个完整的说明
http://qimo601.iteye.com/blog/1544843
  相关解决方案