Я подкласс QTableWidget, чтобы добавить некоторые функции. Я использовал myQTableWidgetSubclass->setRowCount(10);
метод также.
Проблема в том, что таблица не редактируется. Цель состоит в том, чтобы позволить пользователю редактировать строку за строкой, например, сначала первая строка, и когда это будет готово (т.е. пользователь заполняет необходимые данные), затем вторая и т. д.
Мне понадобится аналогичный функционал для «таблицы доступа MS»
Теоретически это очень просто, но люди не будут писать код для вас с нуля.
1) Вам нужно будет использовать void QTableWidgetItem::setFlags(Qt::ItemFlags flags)
сделать элементы редактируемыми и нередактируемыми. Вы можете использовать этот метод для каждого элемента, как вы хотите.
См. Следующее описание значения перечисления из документации Qt::ItemFlags
:
Qt :: ItemIsEditable 2 Может редактироваться.
2) Как только это будет сделано, вам необходимо подключить свой пользовательский слот к соответствующему сигналу элемента, который был только что отредактирован. Ваш слот затем переставит редактируемую функцию ячеек соответственно.
Вот соответствующие сигналы, которые могут вас заинтересовать:
* void QTableWidget::cellChanged(int row, int column) [signal]
* void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) [signal]
* void QTableWidget::currentItemChanged(QTableWidgetItem * current, QTableWidgetItem * previous) [signal]
* void QTableWidget::itemChanged(QTableWidgetItem * item) [signal]
Тогда вам понадобится что-то вроде этого:
connect(myQTableWidgetSubclass, SIGNAL(selectedSignalFromAbove), this, SLOT(mySlotInTheClass));
// ...
void MyClass::mySlotInTheClass(...)
{
// ...
myTableWidgetItemX.setFlags(...);
// ...
}
Других решений пока нет …