Qt 的信号与槽

QT的信号与槽的三种实现方式

3种方式:

1:直接在设计选项卡中拖动连接控件,然后选择控件间的关联函数

2:头文件mainwindows.h中:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void on_calButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

其中

private slots:
    void on_calButton_clicked();

就是使用“元对象系统(meta-object system)”自动进行创建信号与槽的关联性动作,on表示动作,calButton是空间类名,clicked是绑定的信号事件。这种情况我们只需要在涉及窗口手动添加>

我们只需要在mainwindows.cpp中实现对应控件中,右键选择转到槽,即可自动帮你创建好上面的函数,我们只需要实现内容即可。

void MainWindow::on_calButton_clicked()
{
    int fNumInt = ui->firstLineEdit->text().toInt();
    int sNumInt = ui->secondLineEdit->text().toInt();
    ui->resultLineEdit->setText(QString::number(rNum));
}

3:使用代码手动关联信号与槽系统

首先需要在头文件mainwindows.h中添加自己的solt:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

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

private slots:
    void calSlot(); //名字可以随意取

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

然后在mainwindows.cpp中加入对应的槽方法:

void MainWindow::calSlot()
{
    int fNumInt = ui->firstLineEdit->text().toInt();
    int sNumInt = ui->secondLineEdit->text().toInt();
    ui->resultLineEdit->setText(QString::number(rNum));
}

最后,我们需要关联控件的点击事件和槽方法:

mainwindows.cpp中添加

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);  //------新加入部分----//   QObject::connect(ui-callButton,SIGNAL(clicked()),this,SLOT(calSlot()));//关联信号与槽  }  

这三种办法均可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值