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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Однооконный интерфейс  (Прочитано 3436 раз)
qter
Гость
« : Ноябрь 03, 2010, 11:08 »

Привет всем Qt-рам.
Столкнулся со следующей проблемой:
Имеется класс MainWindow (описан в mainwindow.h).
в mainwindow.cpp слоты: showStartWindow(), showProcessWindow().
в main.cpp - MainWindow mw;

Далее есть классы StartWindow и ProcessWindow.

Внутри StartWindow:
Код:
connect(startButton,  SIGNAL(clicked()), this, SLOT(errorHandler()));
Цитировать
errorHandler()
{
   /*...*/
   MainWindow::showProcessWindow();
}

Естественно, это не работает, т.к. нет экземпляра класса MainWindow внутри StartWindow. Как можно использовать тот экземпляр, созданный в main.cpp (mw) ? Или есть другое решение? (Интерфейс однооконный, создавать каждый раз новый MainWindow - вроде не айс).

Простите за сбивчивость, если нужно что-то пояснить -- я с радостью.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 03, 2010, 11:12 »

connect (startWindow, SIGNAL (someSignal ()), mw, SLOT (showProcessWindow ()));
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
p166
Гость
« Ответ #2 : Ноябрь 03, 2010, 11:14 »

main.cpp << #define  EXTERN
Записан
qter
Гость
« Ответ #3 : Ноябрь 03, 2010, 11:36 »

connect (startWindow, SIGNAL (someSignal ()), mw, SLOT (showProcessWindow ()));

Спасибо за ответ.
Пробую так внутри mainwindow:
Цитировать
connect(startWindow, SIGNAL(destroyed()), this, SLOT(showProcessWindow()));
Соответственно в startwindow пишу:
Цитировать
this->destroy();

Событие не отлавливается. Почему?
Записан
qter
Гость
« Ответ #4 : Ноябрь 03, 2010, 12:07 »

Решил ненавистную проблему.
Надо было так:
Код:
this->destroyed();
    this->close();
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Ноябрь 03, 2010, 12:21 »

1. this->destroyed(); не нужно.
2. У диалогов есть вот такие сигналы
void   accepted ()
void   finished ( int result )
void   rejected ()
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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