1、问题描述
我在测试Qt项目的main.cpp中编写了如下代码:
class MyWidget1: public QWidget {
Q_OBJECT
};
// main 程序入口 argc命令行变量的数量 argv 命令行变量的数组
int main(int argc, char *argv[])
{
// 应用程序对象,在Qt中应用程序对象有且仅有一个
QApplication a(argc, argv);
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();
for (const QString &locale : uiLanguages) {
const QString baseName = "TestDesktopProject_" + QLocale(locale).name();
if (translator.load(":/i18n/" + baseName)) {
a.installTranslator(&translator);
break;
}
}
qDebug();
// 窗口对象 MyWidget父类 继承自 QWidget
MyWidget1 w;
// 窗口对象 默认不会显示,必须要调用show方法显示窗口
w.show();
// 让应用程序进入消息循环,让代码“阻塞”到这行
return a.exec();
}
编译时报了如下错误:
初步判断可能跟Qt的元对象编译器有关。
2、原因
暂时还不清楚,等后面找到原因再回来进行补充。
3、解决方案
经过一些尝试,有2种方法可以避免报错:
1、删除 MyWidget1 类中的 Q_OBJECT 宏定义,但是也仅仅避免了报错而已;
2、给每个自定义的组件单独编写到对应的头文件和源文件中。
标签:const,undefined,自定义,MyWidget1,报错,main,Qt From: https://www.cnblogs.com/aoe1231/p/18441919