QT-day(2)-(常用类、信号与槽.....)

该代码示例展示了如何在Qt环境中创建一个登录界面,将登录按钮的点击事件连接到自定义的槽函数。在槽函数中,程序检查用户名是否为admin,密码是否为123456,并根据验证结果提供相应的反馈。此外,还包含了一个语音播报的功能。
摘要由CSDN通过智能技术生成

题目:编写一个登录功能的界面,在登录框项目中,将登陆按钮发射的tclicked信号,连接到自定义的槽函数中,在槽函数中,判断uü界面输入的用户名是否为"admin ,密码是否为"123456如果验证成功,则输出"登陆成功"并关闭界面,如果验证失败,则输出"“登陆失败",并将密码框中的内容清除。

widget.cpp

ui->setupUi(this);
    //语音播报申请空间
    speech = new QTextToSpeech(this);

    //更改窗口界面的尺寸
    //这样设置只是窗口的原始尺寸,使用setFixedSize可将窗口大小固定
    this ->resize(QSize(600, 500));
    this ->setFixedSize(600, 500);

    //设置窗口透明度
    this ->setWindowOpacity(0.9);

    //界面标题更改
    this ->setWindowTitle("Bear-ear-ar");

    //设置窗口图标
    this ->setWindowIcon(QIcon(":/icon/biaoti2.png"));

    //设置主界面logo
    logo = new QLabel(this);                       //实例化一个标签,指定父组件
    logo ->resize(600, 200);                       //设置logo大小
    logo ->setScaledContents(true);                //设置图片自适应
    logo ->setPixmap(QPixmap(":/icon/logo.png"));  //放置图片

    //设置账户logo
    account_logo = new QLabel(this);                        //实例化一个标签,指定父组件
    account_logo ->resize(48, 40);                          //设置logo大小
    account_logo ->move(180, 255);                          //移动logo位置
    account_logo ->setScaledContents(true);                 //设置图片自适应
    account_logo ->setPixmap(QPixmap(":/icon/user.png"));   //放置图片

    //设置密码logo
    passwd_logo = new QLabel(this);                         //实例化一个标签,指定父组件
    passwd_logo ->resize(48, 40);                           //设置logo大小
    passwd_logo ->move(180, 330);                           //移动logo位置
    passwd_logo ->setScaledContents(true);                  //设置图片自适应
    passwd_logo ->setPixmap(QPixmap(":/icon/passwd.png"));  //放置图片

    //设置账户(明文)
    account = new QLineEdit(this);                   //实例化一个行编辑器,指定父组件
    account ->move(240, 264);                        //移动行编辑器的位置
    account ->setPlaceholderText("账号/邮箱/手机号");  //设置占位文本

    //设置密码(密文)
    passwd = new QLineEdit(this);                //实例化一个行编辑器,指定父组件
    passwd ->move(240, 337);                     //移动行编辑器的位置
    passwd ->setPlaceholderText("密码");         //设置占位文本
    passwd ->setEchoMode(QLineEdit::Password);  //设置密文模式

    //设置登录按钮
    login_button = new QPushButton(this);               //实例化一个按钮,指定父组件
    login_button ->resize(80, 30);                      //设置按钮的大小
    login_button ->move(160, 420);                      //移动按钮的位置
    login_button ->setText("登录");                     //设置占位文本
    login_button ->setIcon(QIcon(":/icon/denglu.png")); //放置图片

    //设置退出按钮
    quit_button = new QPushButton(this);                //实例化一个按钮,指定父组件
    quit_button ->resize(80, 30);                       //设置按钮的大小
    quit_button ->move(360, 420);                       //移动按钮的位置
    quit_button ->setText("退出");                      //设置占位文本
    quit_button ->setIcon(QIcon(":/icon/tuichu.png")); //放置图片

    //点击登录按钮,判断ui界面输入的账号是否为“admin”,密码是否为123456
    //如果验证成功,则输出登录成功并关闭界面,如果验证失败,则输出“登录失败”并晴空输入框
    //Qt4版本
    //connect(login_button, SIGNAL(clicked()), this, SLOT(on_clicked_slot_1()));

    //Qt5版本
    connect(login_button, &QPushButton::clicked, this, &Widget::on_clicked_slot_2);

    //语音播报
    connect(login_button, &QPushButton::clicked, this, &Widget::on_clicked_slot_3);

}

//自定义有关登录按钮对应的槽函数(1)(不安全)(Qt4版本)
void Widget::on_clicked_slot_1()
{
    //获取账号和密码
    QString account_t = this ->account ->text();
    QString passwd_t =  this ->passwd ->text();

    if("admin" == account_t && "123456" == passwd_t)
    {
        qDebug() << "登录成功" << endl;
        this ->close();
    }
    else
    {

        qDebug() << "登录失败" << endl;
        this ->passwd ->clear();
    }
}

//自定义有关登录按钮对应的槽函数(2)(安全)(Qt5版本)
void Widget::on_clicked_slot_2()
{
    //获取账号和密码
    QString account_t = this ->account ->text();
    QString passwd_t =  this ->passwd ->text();

    if("admin" == account_t && "123456" == passwd_t)
    {
        qDebug() << "登录成功" << endl;
        this ->close();
    }
    else
    {
        qDebug() << "登录失败" << endl;
        this ->passwd ->clear();
    }
}

//语音播报
void Widget::on_clicked_slot_3()
{
    speech ->say(this ->account->text());
}

 widget.h

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public:
      //语言播报的栈区申请
      QTextToSpeech *speech;

private:
    Ui::Widget *ui;

    //设置主界面logo
    QLabel *logo;

    //设置账户和密码的logo
    QLabel *account_logo;
    QLabel *passwd_logo;

    //设置账户(明文)和密码(密文)
    QLineEdit *account;
    QLineEdit *passwd;

    //登录和退出按钮
    QPushButton *login_button;
    QPushButton *quit_button;

//槽函数类内申明
private slots:
      //自定义有关登录按钮对应的槽函数(1)(不安全的)(Qt4版本)
      void on_clicked_slot_1();

      //自定义有关登录按钮对应的槽函数(2)(安全的)(Qt5版本)
      void on_clicked_slot_2();

      //语言播报
      void on_clicked_slot_3();



signals:
      void my_signal();

结果样章:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值