实现该功能需要两个窗口,一个登录窗口,我这里叫QLanderDialog,一个主窗口,我这里叫MainWindow。
首先,将窗口都加入到main.cpp,因为先要显示登陆窗口,故先让登陆窗口显示,主窗口不显示,然后给他们相互关联,代码如下:
int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; // w.show(); QLanderDialog l; l.show(); QObject::connect(&l, SIGNAL(mainshow()), &w, SLOT(receiverLander())); QObject::connect(&w, SIGNAL(landerShow()), &l, SLOT(receiverLogout())); return a.exec(); }
接下来,登陆窗口,登陆窗口上有登录按钮,点击登录按钮触发mainshow()事件,代码如下
.cpp部分代码: //关闭登录窗口,并发送显示主窗口事件 this->close(); emit mainshow(); //接收注销登录事件,执行显示登陆窗口 void QLanderDialog::receiverLogout()
{
this->show();
}
.h要定义信号mainshow(),部分代码:signals: void mainshow(); // 显示主页面private slots: void receiverLogout(); //接收注销信号槽
然后,主界面窗口,主界面有注销按钮,点击注销按钮触发landershow()事件,代码如下:
.cpp部分代码: //关闭主窗口,并发送注销事件landershow(): this->close(); emit landerShow(); //显示登录窗口 //接收登录事件,执行显示主窗口 void MainWindow::receiverLander()
{
this->show();
}
.h部分代码:
signals:
void landerShow(); //显示登录窗口,即注销事件
private slots:
void receiverLander(); //接收登录信号槽
这样即可实现登录和注销,也可用同方法实现界面切换。