[QT] QListWidgetItem checkbox bez wybrania elementu

0

Checkboxy robię tak dla każdego itemu:

setFlags(flags() | Qt::ItemIsUserCheckable);

jak zaznaczyć sam checkbox na takim elemencie bez jednoczesnego zaznaczenia go?

0

... podczas klikania na QListWidget na checkboxy.

0

Dlaczego zawsze jak napiszę na forum to znajduję rozwiązanie? :-D

QListWidgetItem* QListWidgetDerived::selectedCheckStateItem(const QPoint& pos)
{
    QListWidgetItem* item = itemAt(pos);
    if (item) {
        QStyleOptionButton opt;
        opt.QStyleOption::operator=(viewOptions());
        opt.rect = visualItemRect(item);
        QRect r = style()->subElementRect(QStyle::SE_ViewItemCheckIndicator, &opt);
        if (r.contains(pos))
            return item;
    }
    return 0;
}

void QListWidgetDerived::mousePressEvent(QMouseEvent *event) {
    QListWidgetItem *item = selectedCheckStateItem(event->pos());
    if (!item)
        QListWidget::mousePressEvent(event);
}

void QListWidgetDerived::mouseReleaseEvent(QMouseEvent *event) {
    QListWidgetItem *item = selectedCheckStateItem(event->pos());
    if (!item)
        QListWidget::mousePressEvent(event);
    else
        item->setCheckState(
                (item->checkState() == Qt::Checked) ? Qt::Unchecked : Qt::Checked);
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1