- 当出现QObject::connect::Cannot queue arguments of type'QVector'(Make sure 'QVector'is registered using qregistermetatype().)
Cannot queue arguments of type 'QVector' 表示该类型未注册,无法跨线程传递。
注册函数:qRegisterMetaType<QVector>("QVector"); 的作用就是主动告知 Qt 元系统如何处理该类型,从而消除警告并保证正确传递。
qRegisterMetaType<QVector>("QVector");
- ASSERT failure in QList::at: "index out of range", file C:\Qt\Qt5.12.2\5.12.2\mingw73_32\include/QtCore/qlist.h, line 544
调试找错误,一般是Qlist索引越界,超出范围。
- void QCPItemTracer::setGraph(QCPGraph*) graph isn't in same QCustomPlot instance as this item
图形与项目不在同一个Qcustom绘图实体中。
例子:头文件:TopWidget m_TopWidget;
源文件:MyWindow::MyWindow(QWidget *parent)
: baseWindow(parent)
,m_TopWidget(this)
,m_MidWidget(this)
,m_BotWidget(this)
,m_SkinWidget(this)
{
s_pMainWnd=this;
}
错误:E:\project\3109\SetupConfig\MainWindow\mywindow.cpp:26: error: no matching function for call to 'TopWidget::TopWidget(MyWindow*)'
,m_SkinWidget(this)
原因:没有初始化m_TopWidget
解决方法:TopWidgets*topWidget(){return &m_topwid;},或者是类名称错误导致的
- #include
#include
#include
#include
#include "baseWidget.h"
#include "middlewidgetleft.h"
#include "middlewidgetsright.h"
class middleWidgetLeft;
class middleWidgetRight;//前向声明
class MyWindow;
class myPushButton;
class middleWidgets : public baseWidget
{
Q_OBJECT
public:
explicit middleWidgets(QWidget *parent = 0);
middleWidgetRight m_MidRightWid;
};
6)错误:E:\project\3109\SetupConfig\MiddleWidget\middleWidgets.h:27: error: field 'm_MidRightWid' has incomplete type 'middleWidgetRight'
middleWidgetRight m_MidRightWid;
原因:前向声明类或结构体,编译器还不知道定义,无法知道内部成员,因此不能构造实例对象,因此前向声明的类或结构体只能用来定义指针或引用。
或者由于类名称的前向声明名字与类本身的名字不一致,例如middleWidgetRight 类的前向声明,但实际存在的类名称为MiddleWidgetsRight。
7)QT报错:error:undefined reference to `Vtable for...
原因:子类没有实现父类的纯虚函数;
Qt中,首先要想到的是类中添加了新的继承QObject并添加了Q_OBJECT宏之后,执行构建或重新构建,都会出现这个错误
解决方法:
首先执行QMake,再重新构造,问题即解决
8)QT编译出错Field has incomplete type
原因:头文件没有包含出错
例子:QVector<DATA_FORMAT_INFO> DataInfo出错,没有包含#include