C++ Qt(C+;+;)日志中填充了";小部件(地址)没有名为(var)的属性;

C++ Qt(C+;+;)日志中填充了";小部件(地址)没有名为(var)的属性;,c++,qt,C++,Qt,在Qt Creator中运行该程序时,控制台日志中会充满以下消息: QMenu(0x21aef3db1c0) does not have a property named "myVar" 我只有main.cpp,mainwindow.cpp/h。我正在主窗口中使用Q_属性 main window.cpp MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // code here } QColor M

在Qt Creator中运行该程序时,控制台日志中会充满以下消息:

QMenu(0x21aef3db1c0) does not have a property named "myVar"
我只有main.cppmainwindow.cpp/h。我正在主窗口中使用Q_属性

main window.cpp

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    // code here
}

QColor MainWindow::getMyVar() const
{
    return myVar;
}

void MainWindow::setMyVar(QColor c)
{
    myVar = c;
}

MainWindow::~MainWindow()
{
}
main window.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT
    Q_PROPERTY(QColor myVar READ getMyVar WRITE setMyVar DESIGNABLE true)

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
    QColor getMyVar() const;
    void setMyVar(QColor c);
private:
    QColor myVar;
};

#endif // MAINWINDOW_H

此消息的意义是什么?我可以做些什么来消除它?

样式表规则中的
*
匹配所有内容:

* {
    qproperty-myVar: red;
}
这意味着此样式将应用于所有小部件,而不仅仅是您的
MainWindow
小部件。例如,它将应用于主窗口的
QMenu
,Qt在这里抱怨
QMenu
没有
myVar
属性——实际上它没有

请尝试以下操作:

MainWindow {
    qproperty-myVar: red;
}

你确定这就是你的全部代码吗?您已经在.h中声明了析构函数,但在.cpp中没有看到实现。我建议您删除生成文件夹并重新编译。@eyllanesc我已经更新了帖子,析构函数在cpp中,我只是出于某种原因没有将它粘贴到这里。我已经完成了一个清理、qmake和rebuild,但没有任何帮助。错误消息似乎来自
Qt
样式表代码。您是否在
QMenu
上下文中引用
myVar
的任何位置使用样式表?@G.M.我正在从main加载外部样式表文件。我从VisualStudio来到Qt IDE,我不记得看到过这个错误。但它完全是垃圾邮件,并在Qt中填充控制台日志,它将打印程序中每个小部件的消息,因此列表变得非常大。样式表有多大?如果不是太大,请编辑您的问题,以显示它,如果可能的话。
MainWindow {
    qproperty-myVar: red;
}