Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: qter от Ноябрь 03, 2010, 11:08



Название: Однооконный интерфейс
Отправлено: 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 - вроде не айс).

Простите за сбивчивость, если нужно что-то пояснить -- я с радостью.


Название: Re: Однооконный интерфейс
Отправлено: Пантер от Ноябрь 03, 2010, 11:12
connect (startWindow, SIGNAL (someSignal ()), mw, SLOT (showProcessWindow ()));


Название: Re: Однооконный интерфейс
Отправлено: p166 от Ноябрь 03, 2010, 11:14
main.cpp << #define  EXTERN


Название: Re: Однооконный интерфейс
Отправлено: qter от Ноябрь 03, 2010, 11:36
connect (startWindow, SIGNAL (someSignal ()), mw, SLOT (showProcessWindow ()));

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

Событие не отлавливается. Почему?


Название: Re: Однооконный интерфейс
Отправлено: qter от Ноябрь 03, 2010, 12:07
Решил ненавистную проблему.
Надо было так:
Код:
this->destroyed();
    this->close();


Название: Re: Однооконный интерфейс
Отправлено: Пантер от Ноябрь 03, 2010, 12:21
1. this->destroyed(); не нужно.
2. У диалогов есть вот такие сигналы
void   accepted ()
void   finished ( int result )
void   rejected ()