делагат для QTableWidget |
Здравствуйте, гость ( Вход | Регистрация )
делагат для QTableWidget |
borune |
2.2.2015, 13:31
Сообщение
#1
|
Участник Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: 0 |
Господа, задача следующая: нужно вставить в таблицу кнопку. В обработчике клика на кнопку надо знать, в какой строке эта кнопка находится. Насколько я понял, если устанавливать кнопку в таблицу при помощи setCellWidget, то номер строки и столбца, где находится виджет узнать невозможно. Сигналы cellClicked и itemClicked не эмитируются ячейкой, в которую вставлен виджет. Как решить задачу?
|
|
|
arhohryakov |
2.2.2015, 15:36
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 14.1.2015 Пользователь №: 4315 Спасибо сказали: 3 раз(а) Репутация: 0 |
Господа, задача следующая: нужно вставить в таблицу кнопку. В обработчике клика на кнопку надо знать, в какой строке эта кнопка находится. Насколько я понял, если устанавливать кнопку в таблицу при помощи setCellWidget, то номер строки и столбца, где находится виджет узнать невозможно. Сигналы cellClicked и itemClicked не эмитируются ячейкой, в которую вставлен виджет. Как решить задачу? Создайте наследника Кнопки. В наследнике создайте необходимые поля (номер строки, ряда и т.д). Заполняйте их перед установкой кнопки в ячейку. По клику все данные будут внутри. |
|
|
borune |
2.2.2015, 15:41
Сообщение
#3
|
Участник Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создайте наследника Кнопки. В наследнике создайте необходимые поля (номер строки, ряда и т.д). Заполняйте их перед установкой кнопки в ячейку. По клику все данные будут внутри. Спасибо, этот вариант я рассматривал. Но я хотел изучить делегаты, вот сейчас пытаюсь разобраться в кутэшном примере. Но походу дела мне тут QItemDelegate не поможет, там есть только метод createEditor, который позволяет редактировать содержимое ячейки, используя заданный виджет, а мне же нужно просто отображать вместо ячейки виджет. Я прав? |
|
|
lanz |
3.2.2015, 9:32
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Чтобы делать через делегат можно использовать
http://qt-project.org/doc/qt-4.8/qabstract...ersistentEditor Но вообще мне кажется проще через http://qt-project.org/doc/qt-4.8/qabstract...#setIndexWidget |
|
|
borune |
3.2.2015, 11:25
Сообщение
#5
|
Участник Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: 0 |
Но вообще мне кажется проще через http://qt-project.org/doc/qt-4.8/qabstract...#setIndexWidget либо я что-то не так делаю, либо одно из двух. Пишу так:
При нажатии на кнопку я не попадаю в слот cell_clicked. То есть, по крайней мере, если судить по реакции на нажатие, методы setCellWidget и setIndexWidget ведут себя вроде бы одинаково. Сообщение отредактировал borune - 3.2.2015, 11:26 |
|
|
lanz |
3.2.2015, 11:52
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Делайте коннект к сигналу кнопки.
Чтобы разобрать разные кнопки используйте QSignalMapper. Либо если у вас новый компилятор:
|
|
|
borune |
3.2.2015, 12:11
Сообщение
#7
|
Участник Группа: Участник Сообщений: 152 Регистрация: 1.1.2011 Пользователь №: 2314 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
lanz |
3.2.2015, 13:17
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
И в получателе
Либо как предлагали выше, отнаследовать свою кнопку. |
|
|
Текстовая версия | Сейчас: 26.11.2024, 2:01 |