Qt按钮传信号&类的对象传信号

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
public slots://定义需要的槽函数
    void myslot1();
    void myslot2(int b);
    void myslot3();
    void myslot4();
};

#endif // WIDGET_H

rua.h

自建的类,用来传输信号,基类为QObject

#ifndef RUA_H
#define RUA_H

#include <QObject>

class rua : public QObject
{
    Q_OBJECT
public:
    explicit rua(QObject *parent = nullptr);

signals://定义需要的信号
    void rsignal1();
    void rsignal2(int a);

public slots:
};

#endif // RUA_H

widget.cpp

#include "widget.h"
#include<QDebug>//输出
#include<QPushButton>//按钮
#include"rua.h"
rua *p;
void QObject::timerEvent(QTimerEvent *event)//定义时间事件
{
    qDebug()<<"8点"<<endl;
    emit p->rsignal1();//发送rua类对象中的信号
    emit p->rsignal2(22);
}

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QObject::startTimer(1500);//创建定时器,每1.5s调用一次时间事件

    QPushButton *pbt1=new QPushButton(this);//创建按钮
    QPushButton *pbt2=new QPushButton(this);

    this->setFixedSize(600,400);//设置界面大小

    pbt1->resize(100,60);//设置按钮大小
    pbt2->resize(100,60);

    pbt1->move(150,200);//将按钮移动到想要的位置
    pbt2->move(350,200);

    pbt1->setText("土人才玩土游!");//设置按钮上的文本
    pbt2->setText("复仇者集合!");

    connect(pbt1,&QPushButton::clicked,this,&Widget::myslot3);//创建按钮信号和槽函数的连接
    connect(pbt2,&QPushButton::clicked,this,&Widget::myslot4);

    p=new rua;//创建对象进行连接

    connect(p,&rua::rsignal1,this,&Widget::myslot1);//创建对象信号和槽函数的连接
    connect(p,&rua::rsignal2,this,&Widget::myslot2);


}

Widget::~Widget()//析构函数
{

}

void Widget::myslot1()//定义信号对应的槽函数
{
    qDebug()<<"黑暗剑啊,早就做好了"<<endl;
}

void Widget::myslot2(int b)
{
    qDebug()<<"今晚,进行一个遨游,摸了"<<endl;
}
void Widget::myslot3()
{
    qDebug()<<"耳鸣星?土鸣星啊!"<<endl;
}
void Widget::myslot4()
{
    qDebug()<<"登登,登,登,登"<<endl;
}

main.cpp

创建Widgets应用项目,基类为Qwidget,*面文件

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

上一篇:Qt中按钮(QPushButton)的大小设置


下一篇:QSS应用之QPushButton