QT控制台程序 中 如何使用connect连接信号和槽

yqs112358 发布于 2018/07/26 21:51
阅读 5K+
收藏 0

想用qt写个控制台的小程序,想先测试一下,控制台有消息循环,但是怎么连接信号和槽呢??

#include <QCoreApplication>
#include <QDebug>
#include <QTimer>


void fupdate()
{
    qDebug() << "2333\n";
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "test" << endl;

    QTimer stimer;
    QObject::connect(&stimer, SIGNAL(timeout()), this , SLOT(fupdate()));
    stimer.start(1000);

    return a.exec();
}


编译提示this不存在
自定义带Q_OBJECT的类又编译不过

求dalao帮忙,,,,研究了一个下午了

加载中
0
Amnes1a
Amnes1a
把test_class移到独立的.h .cpp文件就行了
yqs112358
yqs112358
wa谢谢!! 问题解决了
0
Amnes1a
Amnes1a
自定义一个继承自QObject的类不就行了
yqs112358
yqs112358
dalao麻烦帮我来看看
0
yqs112358
yqs112358

dalao帮我看看为什么编译不过。。。。  谢谢。。
代码截图

0
yqs112358
yqs112358
#include <QCoreApplication>
#include <QDebug>
#include <QTimer>

class test_class : public QObject
{
    Q_OBJECT
public slots:
    void fupdate()
    {
       qDebug() << "test_in" << endl;
    }
signals:
    void msgReady();
    void msgWait();
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << "test" << endl;

    test_class *aa=new test_class;
    test_class *bb=new test_class;
    QObject::connect(aa, SIGNAL(msgWait()), bb , SLOT(fupdate()));

    return a.exec();
}

编译错误:
D:\yq\QT\Projects\Console_test\build-Console_test-Desktop_Qt_5_10_1_MinGW_32bit-Debug\debug\main.o:-1: In function `ZN10test_classC1Ev':
D:\yq\QT\Projects\Console_test\Console_test\main.cpp:5: error: undefined reference to `vtable for test_class'
collect2.exe:-1: error: error: ld returned 1 exit status

 

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部