gpt4 book ai didi

c++ - 需要一些关于剖析 Qt 编译错误的建议

转载 作者:行者123 更新时间:2023-11-30 03:03:52 24 4
gpt4 key购买 nike

我对 Qt 的 Q_MOC_OUTPUT_REVISION 自动生成的代码有一些问题。

基本上,当我点击构建时,会出现以下错误。我不完全确定这一切意味着什么,在过去的一个小时里我一直在忙于弄清楚这意味着什么,但我希望能对错误的含义以及我如何摆脱它们做出更明智的解释。

class Product: public QObject
{
Q_OBJECT
Q_PROPERTY(QString _productid READ _productid WRITE _productid)
Q_PROPERTY(QString _productcategoryid READ _productcategoryid WRITE _productcategoryid)
Q_PROPERTY(QString _name READ _name WRITE _name)
Q_PROPERTY(Productcontent * contents READ contents WRITE contents)//dynamic allocation of space for contents
Q_PROPERTY(QString _productimagepath READ _productimagepath WRITE _productimagepath)
Q_PROPERTY(QString _producticonpath READ _producticonpath WRITE _producticonpath )
Q_PROPERTY(QString _productPrice READ _productPrice WRITE _productPrice )

//since this does not change for each product, no need resending it each time
public:

static const string _xmldocpath;
static const string rootitemname;
static const string tagname;
QString _productid;
QString _name;
QString _productcategoryid;
QString _productimagepath;
QString _producticonpath;
QString _productPrice;

Product();
// const std::string &getfilepath();
// const std::string &getproducttagname();
// bool UpdateProductData(string id);
Q_INVOKABLE int FindProductByID(QString id);
~Product();
public slots:

signals:

};

以下错误结果。我不知道如何解剖这个。任何帮助将不胜感激。

 debug\moc_product.cpp: In member function 'virtual int Productcontent::qt_metacall(QMetaObject::Call, int, void**)':
debug\moc_product.cpp:77: error: no match for call to '(QString) ()'
debug\moc_product.cpp:78: error: no match for call to '(QString) ()'
debug\moc_product.cpp:84: error: no match for call to '(QString) (QString&)'
debug\moc_product.cpp:85: error: no match for call to '(QString) (QString&)'
debug\moc_product.cpp: In member function 'virtual int Product::qt_metacall(QMetaObject::Call, int, void**)':
debug\moc_product.cpp:179: error: no match for call to '(QString) ()'
debug\moc_product.cpp:180: error: no match for call to '(QString) ()'
debug\moc_product.cpp:181: error: no match for call to '(QString) ()'
debug\moc_product.cpp:182: error: 'contents' was not declared in this scope
debug\moc_product.cpp:183: error: no match for call to '(QString) ()'
debug\moc_product.cpp:184: error: no match for call to '(QString) ()'
debug\moc_product.cpp:185: error: no match for call to '(QString) ()'
debug\moc_product.cpp:191: error: no match for call to '(QString) (QString&)'
debug\moc_product.cpp:192: error: no match for call to '(QString) (QString&)'
debug\moc_product.cpp:193: error: no match for call to '(QString) (QString&)'
debug\moc_product.cpp:194: error: 'contents' was not declared in this scope
debug\moc_product.cpp:195: error: no match for call to '(QString) (QString&)'
debug\moc_product.cpp:196: error: no match for call to '(QString) (QString&)'
debug\moc_product.cpp:197: error: no match for call to '(QString) (QString&)'
mingw32-make.exe[1]: Leaving directory `C:/Users/minel/QMLUIProject_One-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Debug'
mingw32-make.exe[1]: *** [debug/moc_product.o] Error 1
mingw32-make.exe: *** [debug] Error 2
17:45:04: The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2.
Error while building project QMLUIProject_One (target: Desktop)
When executing build step 'Make'

最佳答案

在我看来,您现在不知道如何使用 Q_PROPERTY。这是基于您在属性 _productid 上的代码的示例,我没有包含不必要的内容:

class Product: public QObject
{
Q_OBJECT
Q_PROPERTY(QString _productid READ _getProductid WRITE _setProductid)
public:

QString _productid;
QString _getProductid() const {return _productid;}
void _setProductid(QString product){_productid = product;}
};

对于 READ,您设置函数返回值 _productid 的名称。

对于 WRITE 你设置 _productid 的函数设置值的名称。

你在这一切上设置你的属性的名称,Qt 宏 Q_PROPERTY 将它们设置为 moc_file 中的函数。编译器返回错误,因为他没有找到像 QString Product::_productid() 或 void Product::_productid(QString) 这样的函数。

宏 Q_PROPERTY 的详细信息和更多示例:http://developer.qt.nokia.com/doc/qt-4.8/properties.html

关于c++ - 需要一些关于剖析 Qt 编译错误的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9145746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com