我正在尝试为QStyledItemDelegate子类(QT4.8.2)实现自定义绘制函数。
我已经回顾了StarItemDelegate示例等等,它看起来非常简单。委托被分配给表的一列,指示记录状态。列项目是可编辑的,但不能由用户编辑。我已经实现了委托子类并且已经证明它可以工作,但似乎无法用它来绘制一个简单的图标。
绘画功能的代码是:
{
painter->save();
QIcon icon(":./opencs.png");
QSize iconsize = option.decorationSize;
painter->drawPixmap(0.0, 0.0, icon.pixmap(iconsize.width(), iconsize.height()));
painter->restore();
}
现在,我只是想确保绘画功能正常工作。该图标已在应用程序的其他区域中使用,因此我知道它有效。我还没有很好地掌握QT,所以我确定这是一个相当简单的问题需要解决,但是我没有从我已经阅读的论坛帖子或我设法挖掘的QT示例中跳出来起来。
有什么想法吗?
答案 0 :(得分:1)
http://qt-project.org/doc/qt-4.8/qstyleditemdelegate.html#details
http://qt-project.org/doc/qt-4.8/qt.html#ItemDataRole-enum
您是否考虑过使用Qt::DecorationRole
?
只需阅读此处的文档:
http://qt-project.org/doc/qt-4.8/qstyleditemdelegate.html#subclassing-qstyleditemdelegate
http://qt-project.org/doc/qt-4.8/qstyleditemdelegate.html#paint
和您的示例代码,看起来您正在正确地遵循文档...
你看过这个例子:
http://qt-project.org/doc/qt-4.8/itemviews-stardelegate.html
您还可以在其中输入一些qDebug
语句,以确保您的元素可见/显示,并通过将qDebug() << Q_FUNC_INFO;
放在paint事件的顶部来转到paint事件
希望有所帮助。