У меня проект от QMainWindow в нем вызываю еще одно окно если оно наследуется от QDialog я делаю так :
void DemAstPro::on_action_10_stvor_faile_triggered()
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
Create_f_DemAsT w;
w.setParent(this,Qt::Dialog);
w.setWindowModality(Qt::ApplicationModal);
w.show();
w.exec();
return;
}
KLIF, произвести класс от него
void DemAstPro::on_action_10_stvor_faile_triggered()
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
Create_f_DemAsT w;
w.setParent(this,Qt::Dialog);
w.setWindowModality(Qt::ApplicationModal);
w.show();
// w.exec(); - такого метода нет
return;
}
Объект w, был создан, что-то ещё, затем вызван метод show(), этот метод отработал. Дальше написано return т.е. функция завершается. А раз функция завершается, то объект, созданный на стеке, тут же удаляется.void DemAstPro::on_action_10_stvor_faile_triggered()
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
Create_f_DemAsT w;
w.setParent(this,Qt::Dialog);
w.setWindowModality(Qt::ApplicationModal);
w.show();
w.exec();
return;
}
void DemAstPro::on_action_10_stvor_faile_triggered()
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
Create_f_demast w;
QDialog *ter = new QDialog (this);
QGridLayout *nb = new QGridLayout (ter);
nb->addWidget(&w);
ter->show();
ter->showMaximized();
ter->exec();
return;
}
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)