// Что за манера менять стандартное поведение?
дак лучше же, когда на текст нажимаешь и чекбокс отмечается, чем выцеливать каждый раз его, чтобы отметить.
// По щелчку айтем выделяется. Может использовать это?
connect(ui->tableWidgetBeeline, SIGNAL(itemPressed(QTableWidgetItem*)), this, SLOT(checkedItem(QTableWidgetItem*)));
// Но опять же возникают вопросы, при нажатии например стрелок тоже будет меняться выделение
выделение тут не при делах. чекбоксы будут отмечаться только при нажатии (мышка || пробел)
короче, почитал setFlags()
выяснил, что на возможность отмечать чекбокс влияет флаг
Qt::ItemIsUserCheckable 16 It can be checked or unchecked by the user.
просто установил нужные флаги, без него.
таким образом, состояние меняется только в слоте, как мне и надо было *fuck yeah*
C++ (Qt)
void Mobiler::checkItem(QTableWidgetItem* item)
{
if (item->checkState() == 0 && item->column() == 0)
item->setCheckState(Qt::Checked);
else if (item->checkState() == 2 && item->column() == 0)
item->setCheckState(Qt::Unchecked);
}
for (int i = 0; i < phonesBeeline.count(); i++) {
QTableWidgetItem *item = new QTableWidgetItem(phonesBeeline[i]);
item->setCheckState(Qt::Checked);
item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
itemsPhonesBeeline << item;
ui->tableWidgetBeeline->setItem(i, 0, item);
QTableWidgetItem *itemBalanse = new QTableWidgetItem;
QTableWidgetItem *itemStatus = new QTableWidgetItem;
itemBalanse->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
itemStatus->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
ui->tableWidgetBeeline->setItem(i, 1, itemBalanse);
ui->tableWidgetBeeline->setItem(i, 2, itemStatus);
itemsBalanseBeeline << itemBalanse;
itemsStatusBeeline << itemStatus;
}