【发布时间】:2018-04-23 03:34:04
【问题描述】:
当在 Qt Creator 中运行程序时,控制台日志会充满消息说...
QMenu(0x21aef3db1c0) does not have a property named "myVar"
我只有 main.cpp、mainwindow.cpp/h。我在主窗口中使用 Q_PROPERTY。
mainwindow.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// code here
}
QColor MainWindow::getMyVar() const
{
return myVar;
}
void MainWindow::setMyVar(QColor c)
{
myVar = c;
}
MainWindow::~MainWindow()
{
}
mainwindow.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
stylesheet.qss
* {
qproperty-myVar: red;
}
这条消息的意义何在?我能做些什么来摆脱它?
【问题讨论】:
-
你确定这就是你的全部代码吗?您已经在 .h 中声明了析构函数,但我没有在 .cpp 中看到实现。我建议您删除构建文件夹并重新编译。
-
@eyllanesc 我已经更新了帖子,析构函数在 cpp 中,我只是出于某种原因没有将它粘贴到这里。我已经完成了干净的 qmake 和重建,但没有帮助。
-
错误消息似乎来自
Qt样式表代码。您是否在QMenu的上下文中使用任何引用myVar的样式表? -
@G.M.我正在从 main 加载一个外部样式表文件。我从 Visual Studio 转到 Qt IDE,但我不记得看到此错误。但它完全是垃圾邮件并填满了 Qt 中的控制台日志,它会为程序中的每个小部件打印消息,因此列表变得非常大。
-
样式表有多大?如果不是太大,请编辑您的问题以尽可能显示它。