| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Кнопка в QTableView |
| Автор: Sosed 5.8.2010, 17:14 |
| Имеется делегат, с помошью которого устанавливаю в таблицу столбец QPushButton'ов. Собственно нужно по нажатию одного из QPushButton'a вызвать диалог, после закрытия которого записать данные в ячейку с вызвавшей его кнопкой. Проблема в том что я запутался в MVC и немогу понять куда воткнуть connect для кнопки. Если его делать в методе делегата createEditor, то как записать данные в модель, в нужное место? Есть мысль хранить указатель на модель в классе делегата и использовать сигналмапер для коннекта кнопок, передавая номер строки, на которой расположена кнопка, столбец "вшить", он не меняется, соответственно зная точные координаты ячейки записать данные проблемы не составит. Но что-то не нравится мне этот указатель в классе делегата да и попахивает это решение. Как правильно сделать? |
| Автор: icecrashldr 5.8.2010, 17:37 |
| Забыл как в QT присваеваются ID к кнопкам.. Вообщем идея в том, что бы по ID кнопки можно было вычислить номер строки, тогда получится динамика. |
| Автор: Sosed 5.8.2010, 18:13 | ||||
Класс делегата сейчас примерно такой
Такое чувство что все эти манипуляции нужно делать где-то в другом месте.
да вроде никак) У меня проблему вычисления строки решает сигналмапер. |
| Автор: icecrashldr 6.8.2010, 10:39 |
| Идея в том что бы для всех buttons поставить один слот, а в слоту разберать на какой button был клик. Либо можно пронаследоваться от QPushButton и добавить свои уникальные данные. |
| Автор: icecrashldr 6.8.2010, 12:44 |
| borisbn, Точно, точно |
| Автор: Sosed 6.8.2010, 18:34 |
| С индексами разобрались а как данные то записать? С if(!model) model = index.model(); я немного опечатался, метод то const, да и вообще правильно ли хранить указатель на модель в делегате? Кнопка отображается с помощью openPersistentEditor, поэтому немогу засунуть код слота openOptionDialog в метод делегата setModelData, диалог появляется не сразу, а после щелчка на другой ячейке( |
| Автор: Sosed 7.8.2010, 16:31 | ||
Скривившись сделал так
|