Вылет в Qt под Windows... помогите советом
От: KirkB  
Дата: 27.05.06 13:23
Оценка:
Здравствуйте!


Пожайлуста помогите советом! В куске кода:

int main(int argc, char **argv)
{
QApplication app(argc, argv);

QWidget wg;

QMessageBox::information(&wg, "1", "1");
QMessageBox::information(&wg, "1", "2");

return app.exec();
}

второй MessageBox не появится, т.к. после закрытия окна первого происходит либо выход из приложения (этот вариант кода) либо вылет программы с ошибкой. Вариантов перебрал великое множество... Вылет происходит и в вызове такой же последовательности MessageBox'ов(и вообще любых модальных диалогов) внутри методов главного класса приложения. Два модальных диалога подряд вызываются нормально только если вызов находится внутри слотов. Примечательно, что на линухе всё прекрасно работает и такой проблемы не возникает...

подскажите пожайлуста, что происходит и возможные варианты решения... мне надо создать несколько модальных диалогов, появляющихся друг за другом после закрытия предыдущего.

Заранее спасибо

20.01.10 20:10: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: Вылет в Qt под Windows... помогите советом
От: Demiurg  
Дата: 27.05.06 22:49
Оценка:
Здравствуйте, KirkB, Вы писали:

Версия Qt? Пробовал делать виджет видимым или вызвать мессаджбоксы в его конструкторе?
А почему бы не воспользоваться классом QWizard или Q3Wizard (если qt не четверка)? Это как раз подходит для, цитирую:

мне надо создать несколько модальных диалогов, появляющихся друг за другом после закрытия предыдущего.

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Вылет в Qt под Windows... помогите советом
От: little_alex  
Дата: 28.05.06 10:44
Оценка:
int main(int argc, char **argv)
{
    QApplication app(argc, argv);

        QWidget wg;

    QMessageBox::information(0, "1", "1");
    QMessageBox::information(0, "1", "2");

    return app.exec();
}

Так тоже не работает?

PS Если не работает попробуй отправить bug репорт.
Re[2]: Вылет в Qt под Windows... помогите советом
От: KirkB  
Дата: 28.05.06 18:48
Оценка:
Здравствуйте, little_alex, Вы писали:

_>
_>int main(int argc, char **argv)
_>{
_>    QApplication app(argc, argv);

_>        QWidget wg;

_>    QMessageBox::information(0, "1", "1");
_>    QMessageBox::information(0, "1", "2");

_>    return app.exec();
_>}
_>

_>Так тоже не работает?

_>PS Если не работает попробуй отправить bug репорт.



Нет, не работает... эту версию я конечно же проверял, с неё как раз и началось... указание родителя — это уже в поисках борьбы с багом было сделано, но спасибо, попробую троллям написать...
Re[2]: Вылет в Qt под Windows... помогите советом
От: KirkB  
Дата: 28.05.06 18:52
Оценка:
Здравствуйте, Demiurg, Вы писали:

D>Здравствуйте, KirkB, Вы писали:


D> Версия Qt? Пробовал делать виджет видимым или вызвать мессаджбоксы в его конструкторе?

D> А почему бы не воспользоваться классом QWizard или Q3Wizard (если qt не четверка)? Это как раз подходит для, цитирую:
D>

D> мне надо создать несколько модальных диалогов, появляющихся друг за другом после закрытия предыдущего.


Вообщем QWizard не подходит, т.к. делаю не для себя, а институтские лабы, которые вообще по заданию надо было на Visual Basic'e лепить... но совесть не позволила...

Версия 4.1.2 Правда уже 4.1.3 вышла, ещё на ней проверю, может что-то и изменилось. В конструкторе вызывать пробовал — таже фигня
Re[3]: Вылет в Qt под Windows... помогите советом
От: Phoenickx  
Дата: 28.05.06 18:53
Оценка:
Здравствуйте, KirkB, Вы писали:

KB>Здравствуйте, little_alex, Вы писали:


_>>
_>>int main(int argc, char **argv)
_>>{
_>>    QApplication app(argc, argv);

_>>        QWidget wg;

_>>    QMessageBox::information(0, "1", "1");
_>>    QMessageBox::information(0, "1", "2");

_>>    return app.exec();
_>>}
_>>


KB>Нет, не работает... эту версию я конечно же проверял, с неё как раз и началось... указание родителя — это уже в поисках борьбы с багом было сделано, но спасибо, попробую троллям написать...


У меня работает, оба окошка появляются. Qt4.1.0
Re[4]: Вылет в Qt под Windows... помогите советом
От: KirkB  
Дата: 28.05.06 20:32
Оценка:
Здравствуйте, Phoenickx, Вы писали:

P>Здравствуйте, KirkB, Вы писали:


KB>>Здравствуйте, little_alex, Вы писали:


_>>>
_>>>int main(int argc, char **argv)
_>>>{
_>>>    QApplication app(argc, argv);

_>>>        QWidget wg;

_>>>    QMessageBox::information(0, "1", "1");
_>>>    QMessageBox::information(0, "1", "2");

_>>>    return app.exec();
_>>>}
_>>>


KB>>Нет, не работает... эту версию я конечно же проверял, с неё как раз и началось... указание родителя — это уже в поисках борьбы с багом было сделано, но спасибо, попробую троллям написать...


P>У меня работает, оба окошка появляются. Qt4.1.0



Я в замешательстве... на Qt 4.1.0 я не тестил, но тестил на Qt 4.0.1 и 4.1.2 ... вылета в таком примере не происходит... но второй MessageBox появляется на сотую долю секунды и, не дожидаясь никаких действий пользователя, типа нажатия кнопки ОК, как это происходит в первом MessageBox'e, приложение оканчивает свою работу... операционка WinXP... Что-то мне это не нравится совсем
Re[5]: Вылет в Qt под Windows... помогите советом
От: KirkB  
Дата: 28.05.06 20:43
Оценка:
Попробовал в 98 винде... оба MessageBox'a нормально запускаются... но приложение после выхода остаётся в списке задач
Re[6]: Вылет в Qt под Windows... помогите советом
От: KirkB  
Дата: 28.05.06 20:55
Оценка:
Всё... понял... да, стыдно... но я тоже грешен... баг по всей видимости был в версии 4.0.1...

А установка новой 4.1.2 не спасла ситуацию только потому, что Qt-библиотеки использовались старые из виндовой папки... когда Install Sheld'ы клепал заимел их там, и при переустановки КуТи не обновил...так что ещё раз спасибо за помощь, всё оказалось куда прозаичнее... вечно чего-нибудь да забудешь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.