Ответ 1
Для флажка с помощью элемента setCheckState метод должен делать то, что вам нужно как для виджетов списка, так и для таблиц. Посмотрите, работает ли код ниже:
Виджет списка:
QListWidgetItem *item0 = new QListWidgetItem(tr("First"), listWidget);
QListWidgetItem *item1 = new QListWidgetItem(tr("Second"), listWidget);
item0->setCheckState(Qt::Unchecked);
item1->setCheckState(Qt::Checked);
Виджет таблицы:
QTableWidgetItem *item2 = new QTableWidgetItem("Item2");
item2->setCheckState(Qt::Checked);
tableWidget->setItem(0, 0, item2);
Вы можете использовать делегаты (QItemDelegate) для других типов виджетов редактора, например: Пример делегата Spin Box.
Надеюсь, это поможет.