Мой делегат не отображает флажки - PullRequest
0 голосов
/ 17 марта 2012

Ребята, я реализовал свой класс делегата на основе QStyledItemDelegate, и у меня проблема в том, что он не отображает флажки рядом с текстом, который отображается в listView.

До того, как я использовал моего делегата, у меня в списке просмотра отображаются эти флажки, поэтому я знаю, что проблема заключается в этом классе делегата.
Какие-нибудь мысли?

РЕДАКТИРОВАТЬ

void Display_Delegate::paint( QPainter* painter,
                              const QStyleOptionViewItem& option,
                              const QModelIndex &index) const
{
    QString model_data = index.data().toString();
    QFontMetrics metrics = view_->fontMetrics();
    int view_width = view_->width();
    auto modified_str = adjust_text(metrics,model_data,view_width);//this just makes the string to fit into view, don't bother about it.
    QStyleOptionViewItemV4 style_option = option;
    initStyleOption(&style_option,index);
    QPalette::ColorGroup color_group = style_option.state & QStyle::State_Selected ? QPalette::Active : QPalette::Inactive;
    if (style_option.state & QStyle::State_Selected)
    {
        // painter->setPen(style_option.palette.color(color_group, QPalette::Highlight));
        painter->setBackgroundMode(Qt::OpaqueMode);

        QColor color(148,231,245,100);
        painter->setBackground(QBrush(color));
    }
    else
    {
        painter->setPen(style_option.palette.color(color_group, QPalette::Text));
    }

    painter->drawText(option.rect,modified_str);
}

1 Ответ

1 голос
/ 17 марта 2012
Qt::CheckState QStyleOptionViewItemV4::checkState

Если этот элемент просмотра можно проверить, т. Е. ViewItemFeature::HasCheckIndicator имеет значение true, checkState равен true, если элемент отмечен;в противном случае это неверно.

Я нашел в методах эту довольно неясную ссылку на наличие контрольного индикатора.Это говорит о том, что если вы хотите сделать элемент «проверяемым», то установите эту опцию стиля .Так что попробуйте что-то вроде:

style_option.ViewItemFeatures = QStyleOptionViewItemV2::HasCheckIndicator;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...