Op 07/12/2017 om 00:21 schreef Jason H:
> I have a model, a few columns of which are supposed to be QPushButtons. 
> I've got it working with checkboxes just fine, and I can get the QPushButtons 
> to display while editing. 
> But I want to display the checkable QPushButton reflecting it's checked state 
> to be displayed all the time, not just when editing.
>
> I looked at the stars delegate example, but that's got some rudimentary 
> painting. 
> I found the ProgressBar example in QAbstractItemDelegate, but that didn't worl
>
> void ButtonDelegate::paint(QPainter *painter, const QStyleOptionViewItem 
> &option, const QModelIndex &index) const {
>       if (index.column() == 0) {
>               QStyleOptionButton button;
>               button.text = _text;
>               QApplication::style()->drawControl(QStyle::CE_PushButton, 
> &button, painter);
>       } else
>               QStyledItemDelegate::paint(painter, option, index);
> }
>
> QSize ButtonDelegate::sizeHint(const QStyleOptionViewItem &option, const 
> QModelIndex &index) const {
>       return QSize(50,10);
> }
>
> But all I got out of it was a black pixel in the first cell. 

You're going to have to do a proper initialization of the
QStyleOptionButton. At the very least, set the rect it is supposed to be
drawn in. You can copy that information from the QStyleOptionViewItem.
You will need to set the checked state from there as well.

André
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to