Russian Qt Forum

Qt => Общие вопросы => Тема начата: RVZ от Октябрь 10, 2010, 00:03



Название: как проверить закрался ли ранее MainWindow
Отправлено: 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


Название: Re: как проверить закрался ли ранее MainWindow
Отправлено: shirushizo от Октябрь 10, 2010, 08:41
Принципиально убивать MainWindow или надо просто закрыть приложение?
Код:
void QCoreApplication::quit ()   [static slot]

И у QMainWindow слота exit() я не наблюдаю, может попробывать?
Код:
 bool QWidget::close() [slot]
 QWidget::setAttribute(Qt::WA_DeleteOnClose);


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

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

На данном этапе приложение можно просто закрыть но вот как соединить QCoreApplication::quit () и &lg, SIGNAL(ends()) не знаю.


Название: Re: как проверить закрался ли ранее MainWindow
Отправлено: shirushizo от Октябрь 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;
}
, но я не стал бы явно вызывать деструктор - ошибка  и отчет в мелкософт скорее всего из-за этого.


Название: Re: как проверить закрался ли ранее MainWindow
Отправлено: RVZ от Октябрь 12, 2010, 19:34
Попробовл так но не получилось
Код:
QObject::connect(&lg, SIGNAL(ends()), &a, SLOT(quit()));
собралось все без ошибок и сообщений о не возможности соединения сигнал слот тоже не было
но quit() не вызывается или вызывается но на работу проги ни как не влияет  ???
и this=0; сделать не получается