0
点赞
收藏
分享

微信扫一扫

QT开发(二)—— 信号与槽,编写登录页面UI

Qt的UI很多门道,也需要自己去画,这里我就不多BB了,直接写一个登录页面的简单逻辑,大家看完应该会有所了解,毕竟这是很基础的东西,我们一步步来

信号与槽,其实就想是个点击事件,so easy , 他有两种实现方式,一种用ui来操作,这也是Qt的一个特色,一种就是代码实现了,我们先来说下简单的步骤吧!

一.信号与槽

假设我们有一个登录的按钮Button,他的objectName为btn_login,那我们为它写一个信号,就是用到connect()这个函数了

//信号与槽 谁 什么信号 谁 去接收
connect(ui->btn_login,SIGNAL(clicked(bool)),this,SLOT(loginFun()));

不用紧张,我们简单来看下这行代码。这个函数有四个参数,分别是:

  • 谁发信号
  • 发什么信号
  • 谁槽接收
  • 槽内操作

可以看到,我这行代码的第一个参数是ui->btn_login,他就是那个发信号的,紧接着是发什么信号,这个是系统自带的,我这里选择的是点击事件,系统每个控件都有信号,button的信号如下:

QT开发(二)—— 信号与槽,编写登录页面UI_ui

我们具体的到后面也会一点点的讲解,然后第三个参数就是本类来处理这个信号了,也就是this,第四个参数,是我们需要定义一个函数来处理,相当于点击事件的回调,这里注意的是我们需要在头文件中定义这个函数:

//槽函数的声明方式
private slots:
void loginFun();

好了,这样就Ok了

void MainWindow::loginFun()
{
qDebug() << "登录成功";
}

嗯嗯,看起来就是这么简单,需要解绑的话只需要调用disconnect,参数和connect参数是一样的,多写一遍罢了

第二种UI的创建信号与槽的方式就太简单了,右键这个控件

QT开发(二)—— 信号与槽,编写登录页面UI_ui_02

选择转为槽然后弹出你要选择的信号

QT开发(二)—— 信号与槽,编写登录页面UI_login_03

然后会为我们在头文件和源文件中自动生成函数,但是这里要注意的就是UI创建的信号会没有connect函数哦

那我们现在创建一个空工程来实现登录UI的基本逻辑吧

二.登录功能

我们创建一个新工程,然后去绘制一些基本的UI,这个我就不教了,你自己去画就好了

QT开发(二)—— 信号与槽,编写登录页面UI_ui_04

这里我选择用UI的方式去实现信号与槽,用UI的方式很方便,来看下代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

//槽函数
private slots:

void on_et_name_textChanged(const QString &arg1);

void on_et_password_textChanged(const QString &arg1);

void on_btn_login_clicked();

private:
Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

在头文件中,编译器为我们生成了三个槽函数,在看我们的源文件

#include "mainwindow.h"
#include "ui_mainwindow.h"

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

MainWindow::~MainWindow()
{
delete ui;
}
//账号
void MainWindow::on_et_name_textChanged(const QString &arg1)
{
if(arg1.length() < 11)
{
this->ui->tv_tips->setText("错误:账号小于11位");
}
else
{
this->ui->tv_tips->setText("错误:账号大于11位");
}
}
//密码
void MainWindow::on_et_password_textChanged(const QString &arg1)
{
if(arg1.length() < 6)
{
this->ui->tv_tips->setText("错误:密码不能小于6位");
}
}
//登录按钮
void MainWindow::on_btn_login_clicked()
{
QString name = this->ui->et_name->text();
QString password = this->ui->et_password->text();
if(name.length() == 0 && password.length())
{
this->ui->tv_tips->setText("账号密码不能为空");
return;
}
if(name == "lgl")
{
if(password == "123456")
{
this->ui->tv_tips->setText(" ");
this->ui->tv_title->setText("登录成功");
}
}
}

这里实际上很简单,也就是我们去写三个函数的逻辑罢了,大家稍微看一下便知道是如何实现了,看下效果

QT开发(二)—— 信号与槽,编写登录页面UI_ui_05

好了,我们下一篇再见吧!

举报

相关推荐

0 条评论