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
  • 相关阅读:
    一致性哈希算法(c#版)
    制作Docker镜像的两种方式
    AWS AutoScaling的一个ScaleDown策略问题以及解决方法
    在CentOS6.6上以replSet方式部署MongoDB集群
    在Docker中安装和部署MongoDB集群
    为Docker容器设置静态IP
    CSS动画的性能分析和浏览器GPU加速
    spark日志配置及问题排查方式。
    Structure Streaming和spark streaming原生API访问HDFS文件数据对比
    SQL On Streaming
  • 原文地址:https://www.cnblogs.com/luckytimor/p/14892578.html
Copyright © 2011-2022 走看看