zoukankan      html  css  js  c++  java
  • 关于QT5 自定义信号槽 以及信号槽的重载问题

    记录一下,自定义信号槽过程中遇到的错误。
    注意这部分即可
    **void(signaldemo:: *vcp)() = &(signaldemo::value_changed);
    void(signaldemo:: *vcp2)(QString) = &(signaldemo::value_changed);
    void(slotdemo:: nslot2)(QString) = &(slotdemo::slotfunc);
    void(slotdemo:: nslot1)() = &(slotdemo::slotfunc);

    #ifndef SIGNALDEMO_H
    #define SIGNALDEMO_H
    #include <QDebug>
    #include <QObject>
    
    class signaldemo:public QObject
    {
        Q_OBJECT
            
    public:
        signaldemo();
        void senddd();
    signals:
        void value_changed();
        void value_changed(QString );
    };
    
    #endif // SIGNALDEMO_H
    
    
    
    ```slot.cpp
    #ifndef SLOTDEMO_H
    #define SLOTDEMO_H
    
    #include <QObject>
    
    class slotdemo:public QObject
    {
        Q_OBJECT
    public:
        slotdemo();
    public slots:
        void slotfunc();
        void slotfunc(QString);
    };
    
    #endif // SLOTDEMO_H
    
    
    #include <QCoreApplication>
    #include "signaldemo.h"
    #include "slotdemo.h"
    #include <QObject>
    //#include <windows.h>
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        //qDebug()<<"starting";
        signaldemo sd ;
        //    slotdemo st;
        //    void(slotdemo::*st)= &slotdemo::slotfunc;
        //    auto  *sd = new signaldemo();
        auto *st = new slotdemo();
        void(signaldemo:: *vcp)() = &(signaldemo::value_changed);
        void(signaldemo:: *vcp2)(QString) = &(signaldemo::value_changed);
        void(slotdemo:: *nslot2)(QString) = &(slotdemo::slotfunc);
        void(slotdemo:: *nslot1)() = &(slotdemo::slotfunc);
    //    QObject::connect(&sd,&signaldemo::value_changed,st,&slotdemo::slotfunc);  //注意是否为信号和槽函数
        QObject::connect(&sd,vcp2,st,nslot2);
        QObject::connect(&sd,vcp,st,nslot1);
        //    QObject::connect(&sd,&signaldemo::value_changed,&st,&slotdemo::slotfunc);
        //Sleep(1000);
        sd.senddd();
        return a.exec();
    }
    
    

    实现部分自己随便实现即可。

  • 相关阅读:
    Android项目实战(五十五):部分机型点击home再点图标进入程序不保留再之前界面的问题
    Android项目实战(五十四):zxing 生成二维码图片去除白色内边距的解决方案
    关于RecyclerView嵌套导致item复用异常,界面异常的问题
    191114
    191112
    191111
    191110
    191109
    191108
    191107
  • 原文地址:https://www.cnblogs.com/neo3301/p/13169831.html
Copyright © 2011-2022 走看看