Название: Передать сигнал после завершения редактирования через QStyledItemDelegate Отправлено: vintik от Март 28, 2013, 16:54 Всем привет!
Подскажите пожалуйста, есть ли какой-то не костыльный способ проделать следующую вещь. Есть класс MegaForm. Он содержит 2 вьюхи. view1 и view2. Для каждой из них назначен делегат MyDelegate. Хочу уметь получать в классе MegaForm уведомление об изменении данных в любой из вьюх(в уведомлении должны быть и сами данные), только в том случае, если данные были изменены через edit виджет делегата (в моём случае это QLineEdit) Спасибо! Название: Re: Передать сигнал после завершения редактирования через QStyledItemDelegate Отправлено: GreatSnake от Март 28, 2013, 17:10 В своей отнаследованной вьюхе добавь сигнал
Код При регистрации делегата за-коннекть сигнал делегата на этот сигнал Код В MegaForm коннекться к YourView::commitData(QWidget* ). Название: Re: Передать сигнал после завершения редактирования через QStyledItemDelegate Отправлено: vintik от Март 28, 2013, 17:13 Да, мысль понял, но небольшая ремарка..
Под данными я подразумеваю, то что отображается в ячейках вьюх - это некий ключ (QString) и значение (double). QLineEdit редактирует только double из этой пары. Но при изменении данных в MegaForm мне нужно получить именно пару ключ и значение. А через указатель на QWidget* я смогу только к содержимому QLineEdit добраться.. Или завести в QLineEdit какой-нить проперти, куда сохранить значение ключа? Название: Re: Передать сигнал после завершения редактирования через QStyledItemDelegate Отправлено: GreatSnake от Март 28, 2013, 17:25 Или завести в QLineEdit какой-нить проперти, куда сохранить значение ключа? Именно.Перегрузи Код в котором и навешивай, например, через Код всё что хочешь. Название: Re: Передать сигнал после завершения редактирования через QStyledItemDelegate Отправлено: vintik от Март 28, 2013, 17:28 GreatSnake, Спасибо большое!
Выкладываю решение, возможно пригодится кому В своей версии Qt 4.8.3 не нашёл у вьюх сигнала SIGNAL(commitData(QWidget*)). Сделал MyView в который добавил сигнал Код: Q_SIGNALS: В MegaForm делаю коннект Код: MyDelegate *delegate1 = new MyDelegate(); Код: void MegaForm::mega_slot1(QWidget *editor) В MyDelegate в методе createEditor добавляю такие строки Код: QLineEdit *editor = new QLineEdit(parent); |