setindexwidget у QTableView, setindexwidget у QTableView |
Здравствуйте, гость ( Вход | Регистрация )
setindexwidget у QTableView, setindexwidget у QTableView |
bikineev |
11.12.2011, 20:49
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 18.11.2011 Пользователь №: 3009 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте. Помещаю в QTableView с помощью setindexwidget кнопки, но когда начинаю редактировать какую-либо ячейку, кнопки исчезают. Как решить данную проблему.
|
|
|
BlueIceScream |
11.12.2011, 21:14
Сообщение
#2
|
Студент Группа: Участник Сообщений: 56 Регистрация: 21.11.2011 Из: Республика Дагестан Пользователь №: 3016 Спасибо сказали: 18 раз(а) Репутация: 3 |
То что вы вставили виджеты в ячейку вовсе не означает что делегат при редактировании о них что то знает. Он получает размер прямоугольника и заполняет ячейку виджетом для редактирования. Ваши виджеты просто скроются. Решение одно - делать собственный делегат и реализовать виджет редактирования как вы хотите.
|
|
|
bikineev |
12.12.2011, 7:14
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 18.11.2011 Пользователь №: 3009 Спасибо сказали: 0 раз(а) Репутация: 0 |
Возможно ли сделать делегат, чтобы кнопки все время были видны, а не только когда нажмешь на ячейку?
Что, в таком случае, для этого нужно? |
|
|
wiz29 |
12.12.2011, 14:24
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
|
|
|
BlueIceScream |
12.12.2011, 14:35
Сообщение
#5
|
Студент Группа: Участник Сообщений: 56 Регистрация: 21.11.2011 Из: Республика Дагестан Пользователь №: 3016 Спасибо сказали: 18 раз(а) Репутация: 3 |
Вам нужно переопределить стандартный делегат который используется для прорисовки.
1) Наследуете QStyledItemDelegate. 2) Переопределяете его методы createEditor, paint, setEditorData, setModelData, sizeHint, updateEditorGeometry 3) Устанавливаете делегат для нужного столбца или строки. Если необходимо отображение делегата только для специальных типов в ячейках используете QItemEditorFactory и QEditorCreaterBase. |
|
|
bikineev |
13.12.2011, 0:29
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 6 Регистрация: 18.11.2011 Пользователь №: 3009 Спасибо сказали: 0 раз(а) Репутация: 0 |
Для того чтобы кнопки были видны всегда нужно переопределять метод paint? Каким образом можно сделать это?
Сейчас попробовал таким образом
на этапе выполнения получаю SIGSEGV |
|
|
BlueIceScream |
13.12.2011, 17:11
Сообщение
#7
|
Студент Группа: Участник Сообщений: 56 Регистрация: 21.11.2011 Из: Республика Дагестан Пользователь №: 3016 Спасибо сказали: 18 раз(а) Репутация: 3 |
Я не умею программировать, поэтому набросала примерный код, чтобы была ясна основная идея. Вам лучше реализовать все по стандартам Qt. Виртуальные методы для редактирования я переопределять не стала. Посмотрев код вы поймете как это сделать.
Рабочий вариант программы по ссылке.
Прикрепленные файлы
|
|
|
Текстовая версия | Сейчас: 27.11.2024, 4:29 |