Теоретически это очень просто, но люди не будут писать код для вас с нуля.
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(...);
// ...
}
так, если я understanded отлично, я вставлю editableitems для первой строки, когда пользователь заполняет строку entier данными, я вставляю редактируемый элемент для следующей строки !! – advseo32
@ advseo32: Да, но обязательно. Вы можете заполнить таблицу множеством строк, но только редактируемые элементы для первого, а затем вы начнете переключать редактируемый флаг в соответствии с вашей пользовательской логикой. – lpapp
я есть использовать этот код, но не работает (Int строки = 0; строка < ui-> tableWidget-> ROWCOUNT(); строка ++) { для (INT Col = 0; Col < ui-> tableWidget-> ColumnCount(); Col ++) { QTableWidgetItem * item = NULL; if (row! = 0) { item = new QTableWidgetItem; item-> setFlags (Qt :: ItemIsEditable | Qt :: ItemIsEnabled); ui-> tableWidget-> setItem (0, col, item); } else { item = new QTableWidgetItem; item-> setFlags (item-> flags() & ~ Qt :: ItemIsEditable); ui-> tableWidget-> setItem (0, col, item); }}} – advseo32