C++ Qt-创建主窗口之前的非模态对话框

C++ Qt-创建主窗口之前的非模态对话框,c++,qt,show,qwidget,qdialog,C++,Qt,Show,Qwidget,Qdialog,我一直在努力做到这一点:我想在创建主窗口之前在窗口上显示QWidget或QDialog,但我不能使用exec(),因为它将进入其循环,在我接受或拒绝对话框之前不会创建主窗口 我想这样做的原因是,在主窗口自行构造时,有一个小部件显示信息。一旦主窗口出现,我不想保留这个额外的窗口 我认为问题的根源在于,调用.exec()时已经创建了主窗口,并且该窗口不会在.exec()之前显示。我找到的解决方案是使用QDialog并调用exec(),但它会阻止我不希望发生的其余代码 代码: int main(int

我一直在努力做到这一点:我想在创建主窗口之前在窗口上显示QWidget或QDialog,但我不能使用exec(),因为它将进入其循环,在我接受或拒绝对话框之前不会创建主窗口

我想这样做的原因是,在主窗口自行构造时,有一个小部件显示信息。一旦主窗口出现,我不想保留这个额外的窗口

我认为问题的根源在于,调用.exec()时已经创建了主窗口,并且该窗口不会在.exec()之前显示。我找到的解决方案是使用QDialog并调用exec(),但它会阻止我不希望发生的其余代码

代码:

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
StartUpDialog start; //this is my custom QDialog, can be a QWidget if necessary.
qDebug() << "starting up!";
MainWindow w;
start.exec(); //I tried show() but it won't show up.
w.startApp(&start); //this function will do some stuff.
w.show();
//I don't want start to stay after mainwindow shows up
return a.exec();
}
intmain(intargc,char*argv[])
{
质量保证申请a(argc、argv);
StartUpDialog开始;//这是我的自定义QDialog,必要时可以是QWidget。
qDebug()调整大小(350380);
开始->显示();
飞溅->升起();
splash->show();
qDebug()表面处理(&w);
开始->删除稍后();
splash->deleteLater();
返回a.exec();
}

我唯一担心的是,我在使用QMovie的小部件中使用Gif,显然必须手动进行更新。

如果我正确理解您的问题(在创建主窗口之前显示一个对话框),您应该看看QSplashScreen类:

感觉您需要创建一个线程并将对话框对象移动到该线程。一旦主窗口被创建,你可以发送一个信号给线程,让它退出。可能是可能的,但我给了我一个很好的解决方案,所以我去了。谢谢你!谢谢,我不知道这门课,我现在来看看!谢谢,这正是我要找的!我用其他人的新代码更新了主帖子。登录表单怎么样?算数吗?
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
StartUpDialog start;
QSplashScreen *splash = new QSplashScreen();
StartUpWidget *start = new StartUpWidget(splash);
splash->resize(350,380);
start->show();
splash->raise();
splash->show();
qDebug() << "starting up!";
MainWindow w;
w.startApp(start);
w.show();
splash->finish(&w);
start->deleteLater();
splash->deleteLater();
return a.exec();
 }