3、标准信号与槽-自定义槽函数
1、新建一个工程,一般实现功能都是在mainWidget w;的构造函数中实现,所以实现之前的代码;
2、在mainwidget.cpp 中实现如下
#include "mainwidget.h" #include <QPushButton> mainWidget::mainWidget(QWidget *parent) : QWidget(parent) { QPushButton b1(this); b1.setText(QString("abc")); b1.move(100,100); } mainWidget::~mainWidget() { }
由于执行完构造函数以后,this局部变量就被释放了,所以并不会显示按钮;
3、因此需要在头文件中定义一个变量不被释放掉;
#ifndef MAINWIDGET_H #define MAINWIDGET_H #include <QWidget> #include <QPushButton> class mainWidget : public QWidget { Q_OBJECT public: mainWidget(QWidget *parent = nullptr); ~mainWidget(); private: QPushButton b1; // 添加按钮对象 QPushButton *b2; }; #endif // MAINWIDGET_H
4、修改构造函数
mainWidget::mainWidget(QWidget *parent) : QWidget(parent) { b1.setParent(this); b1.setText(QString("abc")); b1.move(100,100); b2 = new QPushButton(this); // 指针类型 分配内存 并指定父对象 b2->setText(QString("123")); b2->move(50,50); }
5、信号与槽
按钮按下会触发一个事件,以广播的形式发送一个我被按下了,如果有需要的会回应的这个事件;按下会发送一个信号,而接收信号使用connect进行处理
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection) connect(&b1,&QPushButton::pressed,this,&mainWidget::close); /* b1: 信号发送者 QPushButton::pressed: 什么样的动作触发该信号,按钮按下...需要被处理的信号 this: 哪一个窗口处理该信号 mainWidget::close: 接收信号这处理的动作,槽函数 */
因此,可以将处理按钮123的动作,按钮按下后,主窗口关闭;该信号都是标准信号;
6、自定义槽函数
1、相当于普通函数的用法;
2、Qt5任意得成员函数,普通全局函数、静态函数都可以作为槽函数
3、槽函数需要和信号一致(参数、返回值)
4、返回值,由于信号没有返回值,因此槽函数一定没有返回值
// 自定义槽函数 connect(b2,&QPushButton::released,this,&mainWidget::myslot); // 在头文件中添加成员函数 void myslot(); // 并在源文件中实现相关函数功能 void mainWidget::myslot() { b2->setText(QString("hello")); // 将按钮的内容修改 }
7、信号---》短信 、槽函数----》手机
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号