Делаем QTableWidget построчно редактируемым, как при доступе MS

Я подкласс QTableWidget, чтобы добавить некоторые функции. Я использовал myQTableWidgetSubclass->setRowCount(10); метод также.

Проблема в том, что таблица не редактируется. Цель состоит в том, чтобы позволить пользователю редактировать строку за строкой, например, сначала первая строка, и когда это будет готово (т.е. пользователь заполняет необходимые данные), затем вторая и т. д.

Мне понадобится аналогичный функционал для «таблицы доступа MS»

1

Решение

Теоретически это очень просто, но люди не будут писать код для вас с нуля.

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(...);
// ...
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]