前言
在 Qt编程中经常会遇到要在多个界面之间切换的情况,如从登录界面跳转到主界面,从主界面跳转到设置界面,再返回到主界面。我们将会用一个简单的示例来实现多窗体功能。
登录窗口
创建基类为QMainWindow,类名为LoginWin。再使用ui界面设计。
将密码框不显示出来。
再右键单击按钮进行跳转槽函数编辑:
void loginwin::on_login_button_clicked()
{QString user = "root";QString password = "123456";if((ui->userline->text() == user)&&(ui->passwordline->text() == password)){QMessageBox::about(this,"成功","登录成功");}else{QMessageBox::critical(this,"失败","输入有误",QMessageBox::Ok,QMessageBox::NoButton);}
}
在以后的介绍中,校准用户名和密码的过程会再数据库里面校对。 现在我们拥有了登录界面,还差系统界面。
系统界面
我们在原来项目里面添加:
在选择模板类的时候选择MainWindow。并且在ui设计界面
登录界面 loginwin.cpp 修改部分代码,在登录按钮对应的槽函数中创建主界面对象并显示主界面即可。主界面显示出来后登录界面就可以销毁了。创建的时候注意主界面要单独创建,不能与登录界面有关联。主要代码如下(注意添加头文件 )。
void loginwin::on_login_button_clicked()
{QString user = "root";QString password = "123456";if((ui->userline->text() == user)&&(ui->passwordline->text() == password)){//如果正确则跳转至主界面MainWindow *win=new MainWindow;win->show();this->close();//这里不能使用delete,因为this是主函数中创建的栈空间,系统会自动释放}elseQMessageBox::critical(this,"失败","输入有误",QMessageBox::Ok,QMessageBox::NoButton);
}
跳转到主界面,单击主界面“退出”按钮的时候返回到登录界面)这种操作不是经常性操作,所以开始登录的时候已经关闭窗口了,那么现在要让登录界面显示就要重新创建一个界面)。在mainwindow.ui中单击“退出登录”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked()信号的槽函数,代码如下(注意添加头文件,包含其他窗体)。
void MainWindow::on_quit_button_clicked()
{loginwin *win=new loginwin;win->show();delete this;//此时就可以用delete
}
由主界面跳转到设置界面:在 mainwindow.ui中选择“设置”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked()信号的槽函数,代码如下。(此时又添加也setwin类界面)
void MainWindow::on_edit_button_clicked()
{// 创建设置界面,并且把 this 传入设置界面用于后面的返回// 注意 MainWindow、SetWin 窗口的界面在设计的时候选择 MainWindow 界面模板设计实现setWin *win = new setWin(this);win->show();this->hide();// 主界面隐藏(后期直接可以显示)
}
再从设置界面返回主界面:在 setwin.ui中单击“返回主窗口”按钮,单击鼠标右键,在弹出的快捷菜单中选择“转到槽”,设置 clicked() 信号的槽函数,代码如下。
void setWin::on_back_button_clicked()
{this->parentWidget()->show();delete this;// 释放设置界面
}
结果:
这个简单的例子就把多窗体功能演示了一遍,其实后面的父窗口hide(),也可以在前面的代码中使用!