Qt编译错误

问题:moc_CQFlexWindowBase.cpp:-1: error: undefined reference to `Class::function'

未找到文件moc_xxxcpp

解决:父类中定义了虚函数CQWindgetViewBase_SlideL2R,子类声明了该函数但是没有实现。实现后解决问题。


问题:undefined reference to `vtable for  xxx'

解决:当派生类基于QObject并且在头文件中加入Q_OBJECT后,就出现了该问题。原因是创建该类的时候,没有选择继承QObject或者Object的Qt派生类,所以Qt没有创建相应的moc_xxx文件。
1.删除该类重新创建,并且选择继承QObject,创建完成后将QObject替换为要继承的类。
2.移除该类,并且重新添加。

问题:定义了QList> *m_pWidget;编译后报出'>>' should be '> >' within a nested template argument list

解决:C++不支持连续的<<或>>符号,所以在>>中间加入空格,解决问题。


问题:'constexpr' needed for in-class initialization of static data member 在类的内部初始化非int和bool类型的静态变量报错

解决:在不能通过的静态变量前加入‘constexpr’声明即可,详见http://www.cnblogs.com/wanyuanchun/p/4041080.html。


问题:在非UI线程中定义一个信号使用了自定义类型的Signal并连接到槽函数,运行过程中提示“Cannot queue arguments of type 'QSerialPort::DataBits'”,槽函数不能被调用。
解决:使用qRegisterMetaType("T");函数向元系统注册自定义类型,解决问题。

问题:1.RTTI symbol not found for class 'QThread'  2.QThread: Destroyed while thread is still running

分析:在退出程序的时候没有退出相应的线程和线程的循环run。

解决:1.在线程所在类的析构函数中加入run的退出条件 2.依次调用quit();wait();退出线程并且等待线程退出完毕。问题解决


问题:collect2: error: ld returned 1 exit status

解决:在工程的.pro文件中,同一个头文件被添加了多次,删除多余的只保留一个,编译通过。

你可能感兴趣的:(Qt)