在Qt中,我有一个2表单FirstUI和SecondUI。主要打开FirstUI。在这里我检查应用程序需要的数据库是否存在,如果不存在,则创建一个新的数据库。它还检查数据库中是否存在任何无线网络详细信息。如果有最后连接的wifi的详细信息,那么应用程序将扫描可用网络并使用数据库中的详细信息连接到WiFi网络。关闭调用关闭()该用户界面不关闭
现在,如果数据库中没有wifi细节,或者数据库中列出的网络不存在,或者应用程序无法连接到wifi网络,它将发出信号WifiNotConnected();
我已将信号连接到打开SecondUI的插槽。
connect(this,SIGNAL(WifiNotConnected()),this,SLOT(OpenSecondUI()));
.....
void FirstUI::OpenSecondUI()
{
SecondUI *sec = new SecondUI();
this->close();
sec->show();
}
SecondUI打开,但是这不关闭FirstUI。
编辑:如果wifi细节存在,我有一个类(WifiBoot)继承QObject并为我执行连接任务。因为我希望GIF文件在GUI中播放,并且连接发生在同一时间,所以我已经实例化了实现wifi连接的类(WifiBoot)并将其移至另一个线程。的WiFi连接后我发射其被连接到狭槽打开SecondUI
connect(worker,SIGNAL(finished()),this,SLOT(FinishedConnection()));
void FirstUI::FinishedConnection()
{
OpenSecondUI();
}
这关闭FirstUI并打开SecondUI成品信号。但在第一种情况下并不是。这是为什么发生?有没有更好的方法去解决它? 任何帮助表示赞赏
看看是否有效:确保第二个用户界面的模式是“NonModal”。然后在您的代码中反转该顺序,首先显示第二个UI,然后关闭当前的一个。 ('sec-> show(); this-> close();') – Mousa
可能是OT,但我无法抗拒。我会建议做一个控制器来完成你的目标。控制器将管理两个用户界面,以便分离用户界面。我不认为这是一个良好的做法,用户界面打开另一个用户界面。 –
@ andrea.marangoni感谢您的回复。你能否提供一个示例代码? – Giz