QTableView и двойной щелчок по ячейке

Я работаю над редактором тестовых случаев. Этот редактор содержит USART формат пакета передачи и получения. Редактор представляет собой табличное представление.

Размер передаваемого и получаемого пакета составляет восемь байтов, например:

0x01 0x02 0x03 ... 0x08

Это в моей пятой и шестой колонке. Теперь я хочу, чтобы ячейки в этом столбце были доступны только для чтения, но когда я дважды щелкаю по любой ячейке в этих столбцах, отображается всплывающий виджет. Этот виджет будет содержать восемь полей в текстовом редакторе, где пользователь может вводить данные формата пакета (т.е. длиной восемь байтов). Я могу легко скопировать обратно эти данные из всплывающего виджета в ячейки только для чтения в серверной части.

Это отнимет у пользователя всю политику, например, должен ли быть пробел между каждым байтом. Таким образом, это устранит потенциальные человеческие ошибки.

1: есть ли обработчик событий для двойного щелчка по ячейке табличного представления?

2. Могу ли я иметь общий обработчик двойного щелчка для каждой ячейки одного и того же столбца?

3: Как я могу сделать ячейки определенного столбца доступными только для чтения в табличном представлении, сохранив тот факт, что я могу изменить их значение в конце (т.е. назад)?

введите описание изображения здесь

1

Решение

1: есть ли обработчик событий для двойного щелчка по ячейке таблицы
Посмотреть.

Обратите внимание, вы должны использовать сигналы, а не события:

void doubleClicked(const QModelIndex & index)

2. Могу ли я иметь общий обработчик двойного щелчка для каждой ячейки?
колонка.

Да, вы можете обрабатывать вышеупомянутый сигнал для каждого.

3: Как сделать ячейки определенного столбца доступными только для чтения в таблице?
вид, сохраняя тот факт, что я могу изменить их значение на
конец (то есть назад).

Это флаг, который вам нужно установить для индексов модели по вашему желанию (то есть только для чтения или для чтения и записи):

Qt::ItemIsEditable 2 It can be edited.

5

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

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

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