奇妙な問題があります。
を使用して、カスタムの 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のバグですか?どのように回避しますか?