2013-09-27 4 views
1

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

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

0x01 0x02 0x03 ... 0x08 

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

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

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

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

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

enter image description here

ответ

5

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

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

void doubleClicked(const QModelIndex & index)

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

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

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

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

Qt::ItemIsEditable 2 It can be edited.

Смежные вопросы