Я работаю над редактором тестовых случаев. Этот редактор содержит USART формат пакета передачи и получения. Редактор представляет собой табличное представление.
Размер передаваемого и получаемого пакета составляет восемь байтов, например:
0x01 0x02 0x03 ... 0x08
Это в моей пятой и шестой колонке. Теперь я хочу, чтобы ячейки в этом столбце были доступны только для чтения, но когда я дважды щелкаю по любой ячейке в этих столбцах, отображается всплывающий виджет. Этот виджет будет содержать восемь полей в текстовом редакторе, где пользователь может вводить данные формата пакета (т.е. длиной восемь байтов). Я могу легко скопировать обратно эти данные из всплывающего виджета в ячейки только для чтения в серверной части.
Это отнимет у пользователя всю политику, например, должен ли быть пробел между каждым байтом. Таким образом, это устранит потенциальные человеческие ошибки.
1: есть ли обработчик событий для двойного щелчка по ячейке табличного представления?
2. Могу ли я иметь общий обработчик двойного щелчка для каждой ячейки одного и того же столбца?
3: Как я могу сделать ячейки определенного столбца доступными только для чтения в табличном представлении, сохранив тот факт, что я могу изменить их значение в конце (т.е. назад)?
1: есть ли обработчик событий для двойного щелчка по ячейке таблицы
Посмотреть.
Обратите внимание, вы должны использовать сигналы, а не события:
void doubleClicked(const QModelIndex & index)
2. Могу ли я иметь общий обработчик двойного щелчка для каждой ячейки?
колонка.
Да, вы можете обрабатывать вышеупомянутый сигнал для каждого.
3: Как сделать ячейки определенного столбца доступными только для чтения в таблице?
вид, сохраняя тот факт, что я могу изменить их значение на
конец (то есть назад).
Это флаг, который вам нужно установить для индексов модели по вашему желанию (то есть только для чтения или для чтения и записи):
Qt::ItemIsEditable 2 It can be edited.
Других решений пока нет …