Qt编程相关Bug(记录)

环境:

Qt5.10.1;Qt quick程序;qml与C++交互


问题:

1.error: ‘QMutex’ does not name a type:QMutex mutex;

原因:没有包含相应的类

解决方案:添加:#include <QMutex>


2.TypeError: Property 'setMutex' of object xxxProcessor(0x117dae0) is not a function

原来代码:

Connections{
       target: xxxProcessor
       onOutputSentenceChanged:{
           xxxProcessor.setMutex(0);
        }
}

 解决方案:将代码更改为一下代码

Connections{
       target: xxxProcessor
       onOutputSentenceChanged:{
           xxxProcessor.mutex=0;
        }
 }

3.QQmlApplicationEngine failed to load component 。Incorrectly specified signal assignment

原来代码:Make是用C++写的一个类。Make类被注册为qml类型。以下代码是在xxx.qml文件中的含有bug的代码段

Make{
        onOutputSentenceChanged{
        }
}

解决方案:将代码更改为一下代码:

Make{
        onOutputSentenceChanged:{
        }
}

4.-1: error: collect2: error: ld returned 1 exit status

相应的编译输出:

moc_xxx.o:在函数‘XXX::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)’中:

..../moc_xxx.cpp:84:对Make:doMake(QString, QString)’未定义的引用

collect2: error: ld returned 1 exit status

Make是类名。有Make.h文件,Make.cpp文件。

原因:类似于语法错误.

原来代码:

//Make.cpp文件
int doMake (QString source, QString result){

}

解决方案:将代码更改为一下代码:

//Make.cpp文件
int Make::doMake (QString source, QString result){

}

5.error: invalid operands of types ‘const char [22]’ and ‘const char*’ to binary ‘operator+’

原来代码:

std::string varStr1= "Error: "+e.what();

解决方案:将代码更改为一下代码:

std::string varStr1= "Error : ";
varStr1.append(e.what());

 

展开阅读全文

没有更多推荐了,返回首页