Qt:moc错误1:变量''具有初始化程序,但类型不完整

时间:2019-08-06 09:31:31

标签: c++ qt qml

我是Qt和Qml的新手。为了用C ++练习QML扩展,我建立了一个qt项目并按照(https://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html#上的代码进行了手工编码,但是我收到了两种类型的错误消息:“ moc Error 1:variable''具有初始化但类型不完整”,下面的代码中一个用于“ QPen pen”,另一个用于“ painter”。
我在“ piechart.h”中添加了#included <QPainter>,并且代码按预期进行编译和运行。但是,我还打开了实际的教程代码,该代码是与Qt 5.13一起下载并安装的,并且该代码可以在没有#included <QPainter>的情况下编译和运行。您能告诉我这种差异的原因吗?
PS:我注意到两个项目之间的“ PieChart.pro”有所不同,尽管它们都是基于qmake的,但是我不确定1)这是否是邪恶的根源; 2)为什么当我遵循Qt Creator项目向导时这些文件为何不同。另外,两个“ moc_predefs.h”之间的linux命令行diff显示两个项目之间存在一些差异。


void PieChart::paint(QPainter *painter)
{
    QPen pen(m_color, 2);
    painter->setPen(pen);
    painter->setRenderHints(QPainter::Antialiasing, true);
    painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16);

}

1 个答案:

答案 0 :(得分:0)

我仔细检查了硬盘上的实际教程代码。 <QPainter>实际上包含在“ piechart.cpp”中,而我却在“ piechart.h”中寻找它,其中QPainter对象作为参数传递给paint函数。实际上,我在头文件中包含了`。在网站上,不幸的是它没有在cpp文件中提及它,这是我感到困惑的原因。