0

奇妙な問題があります。

を使用して、カスタムの paint() で進行状況バーを描画していQStyleます。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