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
原文地址:https://www.cnblogs.com/luckytimor/p/14892578.html