我有一个奇怪的问题。
我正在使用QStyle
's在自定义的 paint()drawControl()
中绘制进度条。QStyledItemDelegate
现在应用程序崩溃了,当我尝试使用其中一个或什么打开QMessageBox
一个show()
时exec()
。
我很确定,这不是我的错,而正是这种组合。
我写了一个非常小的示例项目,它显示了问题。
这是代表的paint()
:
void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionProgressBar progressBarOption;
progressBarOption.rect = option.rect;
progressBarOption.minimum = 0;
progressBarOption.maximum = 100;
progressBarOption.progress = index.data().toInt();
// This line crashes a QMessageBox. CE_ProgressBarContents and CE_ProgressBar lead to a crash.
// All other values of QStyle::CE_*** work fine.
// drawComplexControl has no problem either.
QApplication::style()->drawControl(QStyle::CE_ProgressBarContents, &progressBarOption, painter);
}
如果我在 QTreeView(当然有项目)上设置此委托并打开 QMessageBox,应用程序将崩溃。
示例项目可以在我的 GitHub 上找到。
我还用其他信息打开了关于 qtcentre 的讨论。
我在 Mac OS X 10.8.2 上使用 Qt 5.0.1。这是一个Qt错误吗?你将如何解决它?