Qt 信号槽机制详解(超级简易读)史上最傻教程 原理

解析

首先为什么会有QT信号槽?因为有这么一个使用环境:

当你做了某个动作,出触发一些事情,比如你在大街上亲了某个陌生女孩子,这时候会触发你挨巴掌这个事情。这就是信号槽最通俗的模型。

再说一下要如何构建这个场景:

  1. 需要>1个目标(也可以是一个目标,比如你自己抽自己巴掌)
  2. 需要有触发(你去亲陌生女孩子)
  3. 需要有反应事件(女孩子抽你,或者别人抽你)

把上面的事件串起来就是一个完整的信号槽应用环境,示意图如下:

想法(你->亲了女孩子->女孩子->抽你)

对应转换为QT就是:

connect(你,SIGNAL(亲女孩子),女孩子,SLOT(抽你))

  • SIGNAL:就是你的动作
  • SLOT:就是你的动作会触发的事件

这样你该知道它的原理了吧,以及它的应用场景了吧!

下面给你一个例子你去试试:

  • 打开QT ->点击New Project



  • 选择Application-》QT Widgets Application(意思是这是一个软件,是用Widget部件组成的一堆东西)


  • 点击上面的choose...,然后输入项目名字、位置。点击下一步


  • 如果你没有安装VS2015或者VS2017你就选择mingw那个就好



  • 直接下一步就好,下个界面选完成



  • 然后出来这个货:



  • 点开mainwindow.h文件,全选替换以下代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
 
#include <QMainWindow>
#include <QPushButton>
 
 
namespace Ui {
class MainWindow;
}
 
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QPushButton * you;
    QWidget     *nvhaizi;//这是拼音,谨防猪看不懂
 
 
public slots:
    void ChouNi();//这是拼音,谨防猪看不懂
 
 
private:
    Ui::MainWindow *ui;
};
 
 
#endif // MAINWINDOW_H

  • 点开mainwindow.cpp文件,全选替换以下代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
 
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
 
    nvhaizi=new QWidget(this);//得现有女孩子,你才能做这些非法的事情
 
 
    you_ni=new QPushButton(QStringLiteral("你的动作"),nvhaizi);//表示你们在同一时间、同一场合
 
 
    connect(you_ni,SIGNAL(clicked(bool)),this,SLOT(ChouNi()));//建立你们之间关系,你的动作,菇凉要做出的动作
 
 
    nvhaizi->show();//让菇凉出来
}
 
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
 
//女孩子的动作,抽你
void MainWindow:: ChouNi()
{
    QMessageBox::about(NULL, "动作", "女孩子抽了你一顿!");
}
 
 


  • 然后点击QT主界面左下角的绿色三角,弹出界面选择save all



  • 做你要做的事情点那个“你的动作”(记住!现实中不要轻易尝试该动作!除非你很帅!)



  • 触发事件,女孩子抽你



以上就是QT信号槽最通俗易懂的例子了,除非你是猪!

每天进步一点,争取早日实现梦想。

猜你喜欢

转载自blog.csdn.net/mysunshinexia01/article/details/80555871
今日推荐