0

我有一个奇怪的问题。

我正在使用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错误吗?你将如何解决它?

4

0 回答 0