Qt-登录界面信号与槽函数

接着:https://blog.csdn.net/tiydy/article/details/83240223

Qt信号与槽函数可以实现任意两个Qt类的对象之间进行通信,比如登录类QtLoginWin 与界面上的登录按钮loginBt

当点击按钮的时候会发送clicked信号,这样就可以与QtLoginWin的槽函数关联进行通信如下图:

把控件的名字分别修改为

用户输入:userEdit,   密码输入:passEdit, 注册:registerBt, 登录:loginBt (修改方法如下, 选择对应的按钮修改属性objectName)

修改qtloginwin.h

#ifndef QTLOGINWIN_H
#define QTLOGINWIN_H

#include <QMainWindow>

namespace Ui {
class QtLoginWin;
}

class QtLoginWin : public QMainWindow
{
    Q_OBJECT

public:
    explicit QtLoginWin(QWidget *parent = 0);
    ~QtLoginWin();
private slots://槽函数声明--在.cpp中必须实现
    void login_fun();//登录槽函数声明
    void register_fun();//注册槽函数声明

    void signals_test();//用来测试自定义信号使用
signals://信号声明--不需实现,后期直接通过emit 发送就可以了
    void mysignals();
private:
    Ui::QtLoginWin *ui;
};

#endif // QTLOGINWIN_H

修改qtloginwin.cpp文件

#include "qtloginwin.h"
#include "ui_qtloginwin.h"
#include <QDebug>
QtLoginWin::QtLoginWin(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::QtLoginWin)
{
    ui->setupUi(this);
    //按钮信号与本类的槽函数关联
    connect(ui->loginBt,SIGNAL(clicked(bool)), this, SLOT(login_fun()));
    connect(ui->registerBt,SIGNAL(clicked(bool)),this, SLOT(register_fun()));
    //本类对象自己发送信号与本类对象关联
    connect(this, SIGNAL(mysignals()),this, SLOT(signals_test()));

}

QtLoginWin::~QtLoginWin()
{
    delete ui;
}
void QtLoginWin::login_fun()
{
    qDebug()<<"login";
    //发送信号
    emit mysignals();
}
void QtLoginWin::register_fun()
{
    qDebug()<<"register";
    //发送信号
    emit mysignals();
}
void QtLoginWin::signals_test()
{
    qDebug()<<"signal test";
}

当点击按钮的时候---login_fun,或者register_fun会调用, 在这两个槽函数中发送信号, 所以signals_test函数也被调用了

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,信号是一种用于对象间通信的机制。它允许一个对象(信号发出者)发出一个信号,而其他对象(函数接收者)可以接收这个信号并做出相应的响应。 在Qt的UI界面中,你可以通过连接信号来实现用户交互和事件处理。以下是一些关于信号的基本用法: 1. 声明信号:在类的头文件中使用`signals`声明信号,使用`slots`声明函数。例如: ```cpp class MyWidget : public QWidget { Q_OBJECT public: explicit MyWidget(QWidget *parent = nullptr); signals: void buttonClicked(); // 声明一个信号 public slots: void onButtonClicked(); // 声明一个函数 }; ``` 2. 连接信号:在初始化UI界面的代码中,使用`connect`函数信号函数连接起来。例如: ```cpp MyWidget::MyWidget(QWidget *parent) : QWidget(parent) { // 创建按钮 QPushButton *button = new QPushButton("Click me", this); // 连接按钮的clicked()信号与onButtonClicked()函数 connect(button, SIGNAL(clicked()), this, SLOT(onButtonClicked())); } ``` 3. 实现函数:在类的实现文件中,实现函数并进行相应的处理。例如: ```cpp void MyWidget::onButtonClicked() { // 处理按钮点击事件的逻辑 qDebug() << "Button clicked!"; emit buttonClicked(); // 发出信号 } ``` 通过信号机制,你可以在UI界面中处理各种用户交互事件,如按钮点击、文本输入、菜单选择等。这种机制使得代码更加模块化和可维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值