QT学习2-按键切换窗口
一、建立窗口
建立默认UI窗口mainwindow
建立登录窗口
命名为 LoginDlg
当完成后会自动跳转到设计模式,对新添加的对话框进行设计。我们向界面上拖入一个Push Button
,然后更改显示文本为“登录到主界面”。
为了实现点击这个按钮后可以关闭该对话框并显示主窗口,我们需要设置信号和槽的关联。点击设计模式上方的 图标,或者按下F4,
便进入了信号和槽编辑模式。按着鼠标左键,从按钮上拖向界面,如下图所示。
这里简单介绍一下信号和槽,大家可以把它们都看做是函数,比如这里,当单击了按钮以后就会发射单击信号,即clicked()
;然后对话框接收到信号就会执行相应的操作,即执行accept()
槽。一般情况下,我们只需要修改槽函数即可,不过,这里的accept()
已经实现了默认的功能,它会将对话框关闭并返回Accepted
,所以我们无需再做更改。下面我们就是要使用返回的Accepted
来判断是否按下了登录按钮。
完成后,可以按下 或者按下F3来返回控件编辑模式。
在这里,我们先添加了头文件,创建了LoginDlg
类的对象dlg
,然后让dlg
运行,即执行exec()
函数,并判断对话框的返回值,(会在exec这条语句循环,直到消息信号过来)
如果是按下了登录按钮,那么返回值应该是Accepted
,这时就关闭dlg,显示主窗口mainwindow,并正常执行程序;如果没有按下登录按钮,那么就循环直到关闭窗口结束程序。
现在大家可以运行程序,测试一下效果。
运行结果
接下来还有一种方法,建立新的窗口不会关闭旧有窗口
我们打开mainwindow.ui
文件进入设计模式,然后在按钮部件上单击鼠标右键并选择转到槽菜单,如下图所示。
在弹出的转到槽对话框中选择clicked()
信号并按下确定按钮。
这时会跳转到编辑模式mainwindow.cpp
文件的on_pushButton_clicked()
函数处,这个就是自动生成的槽,它已经在mainwindow.h
文件中进行了声明。
我们只需要添加窗体头文件和更改函数体即可。这里更改为:
运行结果
这个程序里我们实现了两类窗口打开的方式,一个是自身消失而后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的方法是不同的。
mainwindow