1

我正在尝试为 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 示例中没有任何东西能引起我的注意向上。

有什么想法吗?

4

1 回答 1

1

http://qt-project.org/doc/qt-4.8/qstyleeditemdelegate.html#details

http://qt-project.org/doc/qt-4.8/qt.html#ItemDataRole-enum

您是否考虑过使用Qt::DecorationRole

只需阅读此处的文档:

http://qt-project.org/doc/qt-4.8/qstyleeditemdelegate.html#subclassing-qstyleditermdelegate

http://qt-project.org/doc/qt-4.8/qstyleeditemdelegate.html#paint

和您的示例代码,看起来您正在正确地遵循文档......

你检查过这个例子:

http://qt-project.org/doc/qt-4.8/itemviews-stardelegate.html

?

您还可以在其中添加一些qDebug语句,以确保您的元素可见/显示,并通过将其放在qDebug() << Q_FUNC_INFO;您的绘画事件顶部来获取您的绘画事件。

希望有帮助。

于 2013-05-23T20:31:56.617 回答