zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    [转贴]分贝是个什么东西?(好东东)
    [VDSP中的Warning]function declared implicitly
    [VDSP中的Warning]explicit type is missing
    [VDSP中的Warning]integer conversion resulted in a change of sign
    Java 一键多列的map
    springboot 使用邮件服务发送验证码 以及在阿里云服务器的配置
    图像处理之入门篇
    javascript怎么可以判断单选复选按钮是否选中,且传值
    QQ,MSN,SKYPE等在线状态代码 (转)
    在Access中SQL的调试
  • 原文地址:https://www.cnblogs.com/luckytimor/p/14892578.html
Copyright © 2011-2022 走看看