Russian Qt Forum
Ноябрь 25, 2024, 07:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как обратиться к виджету другой формы?,  (Прочитано 8015 раз)
sibmail
Гость
« : Январь 17, 2011, 17:45 »

упрощенно: у меня есть главное окно, на нем лежит textedit и кнопка, по кнопке я открываю другую форму (диалог), при этом работа идет в другом диалоге, но мне надо из этого диалога установить текст на textedit главного окна (или прочитать от туда)....

если не понятна суть - мизирный проект прикреплен

архив сюда не смог прикрепить
вот ссылка http://disk.tom.ru/u8jc3v3/1/7cf9a/2.rar

Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Январь 17, 2011, 17:53 »

Dialog::Dialog(QWidget *parent) : QDialog(parent)
{
   MainWindow* mw = qobject_cast<MainWindow* >( parent );
   . . .
}
Записан

Qt 5.11/4.8.7 (X11/Win)
sibmail
Гость
« Ответ #2 : Январь 17, 2011, 18:12 »

спасибо! пошло!
Записан
sergun1604
Гость
« Ответ #3 : Январь 18, 2011, 11:09 »

Я через сигнал-слот все решаю
Записан
sibmail
Гость
« Ответ #4 : Февраль 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...
Записан
alexman
Гость
« Ответ #5 : Февраль 03, 2011, 10:09 »

1. ; ставь в описании классов.
2.
Цитировать
диалог: *.h
Добавь в начале class MainFormImpl;
Записан
SASA
Гость
« Ответ #6 : Февраль 03, 2011, 10:22 »

Про переход с 3 на 4 не знаю.
Про другой виджет.
Мне кажется, что немного неправильная архитектура. Формы, диалоги должны отображать/изменять данные. У Вас открывается диалог, который меняет какие-то данные. Данные рассылают сигнал, что данные изменились, и все формы, которые отображают эти данные, перерисовываются.
Записан
sibmail
Гость
« Ответ #7 : Февраль 03, 2011, 10:44 »

1. ; ставь в описании классов.
2.
Цитировать
диалог: *.h
Добавь в начале class MainFormImpl;

1. не понял где конкретно ставить
2. спасибо!! помогло !!! (сам тупанул - походу переработался...)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 23.