Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: tornadodead от Март 01, 2012, 07:29



Название: Связь двух объектов
Отправлено: tornadodead от Март 01, 2012, 07:29
Вообщем такое дело, есть класс MyTable унаследованный от QTableView, есть MainWIndow в котором инициализируется класс MyTable, и еще lineEdit, так вот нужно при двойном клике по строке таблицы(MyTable) обновить содержиние таблицы(это пустяк, сделал) и в MainWindow в lineEdit вывести данные нажатой ячейки.
Пока один вариант нашел
в MyTable сделать connect doubleClicked, и обновить данные, и в MainWindow сделать connect сигнала doubleClicked таблицы и заполнить lineEdit, но какоето дублирование получается=))).
Хотел разгрузить MainWidow, поэтому создал класс MyTable, чтоб функционал таблицы не фигурировал в MainWindow, но видимо не все так просто=)))так как созданный объект(MyTable) ни чего не знает о том кто его породил, и это правильно!
У кого какие идеи? Видимо спроектировал не привильно!!!


Название: Re: Связь двух объектов
Отправлено: spirits25 от Март 01, 2012, 08:07
а почему бы MyTable'у парента не передать в конструкторе? или просто указатель на MainWindow, чтобы знал куда стучать?


Название: Re: Связь двух объектов
Отправлено: tornadodead от Март 01, 2012, 08:10
а почему бы MyTable'у парента не передать в конструкторе? или просто указатель на MainWindow, чтобы знал куда стучать?
Думал об этом, но мне кажется с точки ООП это не совсем правильно, или мне просто так кажется?


Название: Re: Связь двух объектов
Отправлено: Bepec от Март 01, 2012, 08:14
Вы немного путаетесь и ещё не пробовали сигналы слоты?

Если вы наследовались от QTableView, то унаследовали и все его сигналы, уже готовые clicked, dblClicked.

Нет нужды ничего выдумывать, просто надо использовать то, что есть.


Название: Re: Связь двух объектов
Отправлено: tornadodead от Март 01, 2012, 08:18
Вы немного путаетесь и ещё не пробовали сигналы слоты?

Если вы наследовались от QTableView, то унаследовали и все его сигналы, уже готовые clicked, dblClicked.
да я знаю, что унаследовал все, и сигналы и т.д., вопрос в другом как обратится из MyTable в MainWidow? Как предложили передать указатель MainWidow в MyTable можно но действительно это правильно будет?


Название: Re: Связь двух объектов
Отправлено: Bepec от Март 01, 2012, 08:22
Зачем тебе обращаться к MainWindow???

Делай проще, не ищи проблем.

При дабл клике (ловишь унаследованный сигнал в QMainWindow) и в нём одновременно обновляешь модель
Код:
аля model_.reset()
и ставишь значения в lineEdit().

В чём проблема???


Название: Re: Связь двух объектов
Отправлено: tornadodead от Март 01, 2012, 08:26
При дабл клике (ловишь унаследованный сигнал в QMainWindow) и в нём одновременно обновляешь модель
Код:
аля model_.reset()
и ставишь значения в lineEdit().
В чём проблема???
сделал так, в MyTable создал слот обновляющий таблицу,а в MainWindow сгенерировал сигнал, а вслоте создал вызов слот из MyTable и оновление lineEdit, вроде все нормально!