Checkboxy robię tak dla każdego itemu:
setFlags(flags() | Qt::ItemIsUserCheckable);
jak zaznaczyć sam checkbox na takim elemencie bez jednoczesnego zaznaczenia go?
Checkboxy robię tak dla każdego itemu:
setFlags(flags() | Qt::ItemIsUserCheckable);
jak zaznaczyć sam checkbox na takim elemencie bez jednoczesnego zaznaczenia go?
... podczas klikania na QListWidget na checkboxy.
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);
}