Qt4登录窗口
问题描述:
我正在写一个登录窗口在Qt。Qt4登录窗口
当用户点击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();
谢谢,现在窗口保持打开状态。 但是,它仍然开放得太晚。 加载connecttoserver方法时,不显示窗口... – Klaus 2009-10-22 13:55:38
直到您的应用程序返回到事件循环,屏幕上才会显示它。 你可以尝试在widget-> show()之后调用qApp-> processEvents(),但这只是一个破解,而且窗口不会重新正确地重绘(等等)。 要正确解决问题,您需要:i)使connecttoserver无阻塞或ii)在不同的线程上调用connectttoserver。 – atomice 2009-10-22 14:05:48
谢谢,它现在运作良好。我会在一会儿看看线程。 – Klaus 2009-10-22 14:13:09