В нем есть m_dlg, в котором кнопка Add. Как ПРАВИЛЬНО передать владельцу объекта m_dlg, что кнопка add нажата?
У меня собственно два варианта было:
- создать глобальный объект некоторого класса в котором были бы только сигналы и слоты и объект этого класа занимался бы такими ситуациями, когда нужно передать сообщение от объекта к владельцу.
- Создать в диалоге функцию getAddButton() которая возвращает указатель на кнопку и в месте где создается объект подсоединить нужный сигнал к нужному слоту.
Но чувствую что ни тот ни другой вариант не красивые.
Подскажите пожалуйста.
У меня не модальный диалог. Поэтому он будет работать пока юзеру не надоесть добавлять записи. Поэтому неподходит ваш вариант.
Мне нужно по сигналу от диалога забирать от тудава записи.
Вроде уже реализовал посредством добавления функции QPushButton* getAddButton() в диалог. И добавил в MainWindow запись
[code]
QObject::connect(m_dlg->getAddButton(), SIGNAL(clicked()),this, SLOT(AddButton_Dialog()));
[/code]
И вроде это работает, но боюсь наткнуться на что-нибудь о чем я не знаю.
Например коннект происходит в MainWindow, а указатль - то на кнопку действителен до тех пор пока диалог жив, а после этого кнопка умирает. Может этот коннект нужно прибить когда диалог умирает?
лучше создать сигнал у диалога и кунуть на него сигнал от кнопки.
а владельца m_dlg приконнектить уже к диалогу
>Вроде уже реализовал посредством добавления функции QPushButton* getAddButton() в диалог.
говнокод!
Спасибо всем за ответы проблема решена добавлением сигнала в диалог, те так как написано выше.
Доки почитываю, но чтобы засесть и все прочитать просто времени нет.
Можно и так было. Но мне очень не хотелось выводить в публик всю форму, тк она нарисована в QT Disigner. Там создается приватное свойство
Ui::Dialog * dlg - вроде как указатель на себя. Поэтому чтобы вытащить кнопку в паблик наверно нужно засунуть этот указатель в паблик. А я почему-то не захотел так делать - сам не знаю почему.