Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt4登录窗口_C++_Qt - Fatal编程技术网

C++ Qt4登录窗口

C++ Qt4登录窗口,c++,qt,C++,Qt,我正在Qt中编写一个登录窗口 当用户单击OK时,它应该关闭登录窗口,显示“连接到服务器…”小部件,并在connecttoserver方法完成其工作后打开主窗口 但是,小部件仅在显示主窗口时出现,并立即消失(甚至不应该关闭!) 我如何解决这个问题 void LoginWindow::blah() { close(); QWidget widget; widget.show(); //calls to the "connecttoserver method"

我正在Qt中编写一个登录窗口

当用户单击OK时,它应该关闭登录窗口,显示“连接到服务器…”小部件,并在connecttoserver方法完成其工作后打开主窗口

但是,小部件仅在显示主窗口时出现,并立即消失(甚至不应该关闭!)

我如何解决这个问题

void LoginWindow::blah()
   {
   close();

   QWidget widget;
   widget.show();

   //calls to the "connecttoserver method"

   Main *main = new Main(student->getInfo()[0], student->getInfo()[1], student->getInfo()[2], view);
   main->show();
       }
   }

QWidget在堆栈上声明为自动,因此当方法返回时,它将被销毁。您想在堆上声明它:

QWidget *widget = new QWidget();
widget->show();

除了Atomices之外,请确保您已将应用程序的quitOnLastWindowClosed设置为false,否则您的应用程序将在关闭登录窗口和打开主窗口之间终止。

谢谢,现在窗口保持打开状态。然而,它仍然开得太晚。当connecttoserver方法加载时,不会显示任何窗口……在应用程序返回到事件循环之前,它不会在屏幕上显示。您可以尝试在widget->show()之后调用qApp->processEvents(),但这只是一种攻击,窗口无法正确地重新绘制(除其他外)。要正确解决此问题,您需要i)使connecttoserver无阻塞,或者ii)在其他线程上调用connecttoserver。谢谢,它现在运行良好。我过一会儿再看线程。