QT添加登陆界面(QT系列2)

QT添加登录界面用于让自己的程序看起来更加丰富。
登陆界面可以设置为一个常规的输入用户名和密码的界面,两者正确时进入下一界面。其实现过程为:
1.添加一个前置界面
2.在新界面添加两个文本条(用户名/密码),两个按钮(登录,退出)。
3.在文本条输入正确内容后,按下登录键进入下一界面。

除了常规的用户名密码界面外,还可以新建一个获得内容并在下一界面使用的登陆界面。举个例子就是我可以第一个界面获得一个人的身高体重,并在主界面上显示该人的IBM指数。

本文尽可能将过程写详细,但对于新建工程等一系列基础操作可参考本人的第一篇QT相关文章QT串口收发数据+添加背景

下面开始实战:
一、用户名,密码登陆界面

1.新建一个工程,编译器最好只选择一种(我的话就选择了MinGW32),基类类型选择QMainWindow或者QWidget都可以(前者很全面,后者更精简)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.新建一个前置界面
在工程处右键–>添加新文件–>选择QT里的QT设计师界面–模板选择不含按钮的类型(选择包含按钮的话,生成ui界面时,界面上会多几个按钮)–>选择修改或不修改新生成界面类的名字–>结束。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.给新界面添加控件
两个按钮,两个标签,两个文本条(PushButton,Label,LineEdit),而后修改他们的内容及属性上的名字。
在这里插入图片描述
最终效果如下,各控件名字如右侧所示,修改名字的地方在右下角画圈的地方。注意:名字和内容不是一个东西,名字需要改属性,内容直接双击就可以修改。
在这里插入图片描述
4.界面做好之后,我们来进行信号与槽的关联。单击下面的绿色加号来进行添加。
在这里插入图片描述
发送者选择exit这个按钮,信号选择clicked也就是单击时,接收者选择Dialog也就是这个界面的名字(我们在新建这个界面时给它起的名字),槽选择exit也就是退出。
最终效果为我们单击退出按钮时退出整个界面。
在这里插入图片描述
做完退出按钮的信号与槽之后,我们用另一种方式给登录按钮进行信号与槽的添加。登录按钮右键–>选择槽–>信号选择为clicked。之后我们转到槽函数的编辑界面。
在这里插入图片描述
在槽函数中我们填入如下代码。

void Dialog::on_login_clicked()
{
    if(ui->name->text() == tr("hahaha") &&
               ui->pass->text() == tr("123456"))
        {
           accept();
        }
}

代码含义为当ui界面的name文本条内容为hahaha,且pass文本条内容为123456时,
dialog返回一个accept()信号。这个信号我们将会用于主界面的创建。

接下来我们转到main.cpp进行修改。

#include "mainwindow.h"
#include <QApplication>
#include <dialog.h>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    Dialog dlg;
    if (dlg.exec() == QDialog::Accepted)
        {
           w.show();
           return a.exec();
        }
        else return 0;    
   
}

首先引入dialog头文件,并在主函数里新建一个dialog对象,然后通过判断语句判断该对象
是否返回过一个accept信号,如果确实有此信号,显示主界面。

此时我们就可以进行实验,输入正确用户名密码后我们就可以登录主界面。

当然我们可以进行更多优化,比如:
1.输入错误后进行警告
2.在用户名和密码文本条添加一些提示性文字
3.输入密码时不显示自己输入的内容
4.在主界面上添一些内容
这些将会在文章末尾加上。

接下来我们来做开头说的第二种登陆界面,获取一个人的身高体重,并在主界面显示该人的IBM指数。
二、获取身高体重信息输出IBM指数。
1.修改登录界面
修改两个文本条的名字为height和weight。并在主界面的ui界面中添加一个文本,一个label和一个按钮。
在这里插入图片描述
在这里插入图片描述

2.修改dialog.cpp文件
首先引入QString头文件,之后设置两个QString类的变量str1,str2.之后修改登录按钮的槽函数。具体的dialog.cpp代码如下:

#include "dialog.h"
#include "ui_dialog.h"
#include <QString>


QString str1;
QString str2;


Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
}


Dialog::~Dialog()
{
    delete ui;
}


void Dialog::on_login_clicked()
{
   str1=ui->height->text();//赋值为ui界面height文本条内容
   str2=ui->weight->text();
   accept();
}



此时的按钮槽函数我们不需要当两个内容输入正确才返回accept,所以删掉if语句
并在给两个变量赋值后直接返回信号。
我们在外部定义两个QString变量,是为了让他们为全局变量,这样就可以在其余cpp内调用他们的值

3.修改mainwindow.cpp内的代码
引入外部变量str1,str2,将QString形式转化为整数变量并进行计算IBM,之后将计算的值显示在主界面的文本条上。
具体的mainwindow.cpp代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <QtDebug>

//引入全局变量
extern QString str1;
extern QString str2;


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}


MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    //将两个字符串类型数据转化为浮点型便于计算
    float height=str1.toFloat();
    float weight=str1.toFloat()//计算IBM
    float IBM=weight/(height*height);
    //由于lineEdit需要填QString数据,所以重新转化数据格式
    QString str=QString("%1").arg(IBM);
    //在lineEdit上显示IBM
    ui->lineEdit->setText(str);
    //刷新界面,避免界面卡死不显示数值
    QMainWindow::update();
}

这样我们在登陆界面输入两个数值后,按下登录键进入主界面,之后按下计算键便可以得到IBM值。

本程序仍可优化,比如可以添加判断语句,直接显示该人的健康状态。

下面讲一下用户名密码登录界面的几个优化方案
1.添加提示语句
2.密码不直接显示:
进入ui界面,在右下侧属性栏修改placeholderText可以添加提示语句。
修改echoMode可以将输入内容改为密码格式,这样输入密码时显示的就是一个个黑点,提高安全性。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本篇到底结束,近期写一篇有关利用QT定时器的文章。

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值