Kevinwang623 2016-09-03 12:15 采纳率: 0%
浏览 7035

Qt派生类继承基类信号槽问题

在A项目中定义基类Base,里面含有发送和接收的信号和槽函数。在项目B中定义派生类ComA继承自Base,B中有一个按钮,点击按钮后调用Base中的sendMsg信号发送信息。
方式1中方法是可行的。但是方法2中槽函数却收不到信息。但是从A向B中发送的信号在方式2中是可行的。方式1采用的是直接引用的方式;方式2采用动态加载的形式。二者区别在什么地方呢?为何直接引用可以,动态加载的就不可以呢?请各位大神指教~~~

项目A中类的伪代码如下:
    class Base:public QWidget{
        Q_OBJECT
        ......
        signals:
            void sendMsg(const QString &str);
        public slots:
            virtual void recMsg(const QString &str){
            }
    }
    Class MainWindow:public QMainWindow{
        Q_OBJECT
        .....
        signals:
                void sendMsgToCom(const QString &str);
        private slots:
              void recMsgFromCom(const QString &str);
}
    在MainWindow构造函数中
        //方式1
    Base *test = new ComA();
    this->setCentralWidget((QWidget*)test);
        connect(test,SIGNAL(sendMsgToFrame(QString)),this,SLOT(recMsgFromCom(QString)));
        //方式2
         QLibrary lib("B.dll");
    typedef Base* (*handle)();
    handle t = (handle)lib.resolve("CreateComInterface");
    this->setCentralWidget((QWidget*)t());
    Base *child = t();
    connect(child,SIGNAL(sendMsgToFrame(QString)),this,SLOT(recMsgFromCom(QString)));
    connect(this,SIGNAL(sendMsgToCom(QString)),child,SLOT(recMsgFromFrame(QString)));
项目B中类的伪代码如下,B项目最终导出为动态库,供A使用。
        Class ComA:public Base{
            Q_OBJECT
            ......
            public slots:
                //实现基类中槽
                virtual void recMsg(const QString &str);
     }
     //B中带界面,点击按钮后发送sendMsg信号
     //导出C接口
     extern "C" __declspec(dllexport) Base* CreateComInterface();
  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2016-10-03 16:31
    关注
    评论

报告相同问题?

悬赏问题

  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用