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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как проверить закрался ли ранее MainWindow  (Прочитано 2294 раз)
RVZ
Гость
« : Октябрь 10, 2010, 00:03 »

Всем доброе время суток!!!
Что то ни как не могу найти способ выяснить былли this->exit(); у MainWindow или нет ато приложение просит отчет мелкософту отправить Улыбающийся

Код:
QApplication a(argc, argv);
MainWindow w;
LDialog lg;
QObject::connect(&lg, SIGNAL(ends()), &w, SLOT(exit()));
lg.exec();
//---------------------------------
    //if(w){                                примерно как то так хочется только не знай как чтоб работало
    //    w.show();
    //}
//---------------------------------
    w.show();
    return a.exec();
планировалось так что при неправильном условии диалог lg закрывает MainWindow который уже создан но пока не показался
Незнаю насколько это правильно деструктить объект из его нутрей

Помогите кто может разъясните как сделать убиение MainWindow w
Записан
shirushizo
Гость
« Ответ #1 : Октябрь 10, 2010, 08:41 »

Принципиально убивать MainWindow или надо просто закрыть приложение?
Код:
void QCoreApplication::quit ()   [static slot]

И у QMainWindow слота exit() я не наблюдаю, может попробывать?
Код:
 bool QWidget::close() [slot]
 QWidget::setAttribute(Qt::WA_DeleteOnClose);
« Последнее редактирование: Октябрь 10, 2010, 08:49 от shirushizo » Записан
RVZ
Гость
« Ответ #2 : Октябрь 11, 2010, 14:33 »

Цитировать
И у QMainWindow слота exit() я не наблюдаю, может попробывать?
Я сам сделал этот слот и в нем вызываю this->~MainWindow(); правильность такова решения весьма сомнительна

Пи чем если в main не вызывать w.show();
то предложение отправить отчет не появляется из чего я делаю вывод что вызов this->~MainWindow(); приемлем
и также предполагаю что отчет об ошибке связать с вызовом show() уже не существующего объекта

На данном этапе приложение можно просто закрыть но вот как соединить QCoreApplication::quit () и &lg, SIGNAL(ends()) не знаю.
Записан
shirushizo
Гость
« Ответ #3 : Октябрь 11, 2010, 17:06 »

>>а данном этапе приложение можно просто закрыть но вот как соединить QCoreApplication::quit () и &lg, SIGNAL(ends()) не знаю.
Код:
QObject::connect(&lg, SIGNAL(ends()), &a, SLOT(quit()));

Условие if(w) даст false, если w==0, тогда надо
Код:
MainWindow::~MainWindow
{
   //...
   this=0;
}
, но я не стал бы явно вызывать деструктор - ошибка  и отчет в мелкософт скорее всего из-за этого.
Записан
RVZ
Гость
« Ответ #4 : Октябрь 12, 2010, 19:34 »

Попробовл так но не получилось
Код:
QObject::connect(&lg, SIGNAL(ends()), &a, SLOT(quit()));
собралось все без ошибок и сообщений о не возможности соединения сигнал слот тоже не было
но quit() не вызывается или вызывается но на работу проги ни как не влияет  Непонимающий
и this=0; сделать не получается
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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