Название: как обратиться к виджету другой формы?, Отправлено: sibmail от Январь 17, 2011, 17:45 упрощенно: у меня есть главное окно, на нем лежит textedit и кнопка, по кнопке я открываю другую форму (диалог), при этом работа идет в другом диалоге, но мне надо из этого диалога установить текст на textedit главного окна (или прочитать от туда)....
если не понятна суть - мизирный проект прикреплен архив сюда не смог прикрепить вот ссылка http://disk.tom.ru/u8jc3v3/1/7cf9a/2.rar Название: Re: как обратиться к виджету другой формы?, Отправлено: GreatSnake от Январь 17, 2011, 17:53 Dialog::Dialog(QWidget *parent) : QDialog(parent)
{ MainWindow* mw = qobject_cast<MainWindow* >( parent ); . . . } Название: Re: как обратиться к виджету другой формы?, Отправлено: sibmail от Январь 17, 2011, 18:12 спасибо! пошло!
Название: Re: как обратиться к виджету другой формы?, Отправлено: sergun1604 от Январь 18, 2011, 11:09 Я через сигнал-слот все решаю
Название: Re: как обратиться к виджету другой формы?, Отправлено: sibmail от Февраль 03, 2011, 09:37 не совсем пошло ))). у меня ситуация перевести код с 3 на 4.
qt3: главное окно: MainFormImpl::MainFormImpl(QWidget *parent, const char *name, WFlags f):MainForm(parent,name,f) {....} диалог: *.h class AcceptMessage : public AcceptMessageForm { Q_OBJECT public: AcceptMessage (QWidget *parent = 0, const char *name = 0,WFlags f = 0); //,WFlags fl = WDestructiveClose MainFormImpl* mf; .... } cpp: AcceptMessage::AcceptMessage(QWidget *parent, const char *name,WFlags f):AcceptMessageForm(parent,name,f) { mw = (MainFormImpl*) parent; mw->.... и т.д. используем везде и как угодно ) ....} но в qt4 ругается на *.h error: ISO C++ forbids declaration of 'MainFormImpl' with no type error: expected ';' before '*' token как еще прописать то? MainWindow* mw = qobject_cast<MainWindow* >( parent ) помогает только в рамках конструктора, а мне еще надо бы в других функциях (слотах) использовть mw... Название: Re: как обратиться к виджету другой формы?, Отправлено: alexman от Февраль 03, 2011, 10:09 1. ; ставь в описании классов.
2. Цитировать диалог: *.h Добавь в начале class MainFormImpl;Название: Re: как обратиться к виджету другой формы?, Отправлено: SASA от Февраль 03, 2011, 10:22 Про переход с 3 на 4 не знаю.
Про другой виджет. Мне кажется, что немного неправильная архитектура. Формы, диалоги должны отображать/изменять данные. У Вас открывается диалог, который меняет какие-то данные. Данные рассылают сигнал, что данные изменились, и все формы, которые отображают эти данные, перерисовываются. Название: Re: как обратиться к виджету другой формы?, Отправлено: sibmail от Февраль 03, 2011, 10:44 1. ; ставь в описании классов. 2. Цитировать диалог: *.h Добавь в начале class MainFormImpl;1. не понял где конкретно ставить 2. спасибо!! помогло !!! (сам тупанул - походу переработался...) |