• 6073阅读
  • 1回复

Qt 修改ui文件莫名奇妙的错误 [复制链接]

上一主题 下一主题
离线1099965906
 
只看楼主 倒序阅读 楼主  发表于: 2013-11-24
环境:Qt5.1.1 32位版,网友预编译静态编译版,win7 64位, VS2012

一、新建工程->加入C++ Qt GUI 的第二章sort例子中源文件头文件,ui文件->编译->成功运行。(这说明代码并没错。)
如下图:并没有用到什么非常高级的知识。


问题来了:
二、把项目里的ui文件移除,moc_开头的文件移除,ui的头文件移除,清理解决方案。
打开ui文件,用Qt设计师在一个label中的text加入一点字符(其实就是随便改一下,改了哪里不重要。)

重新加入UI文件->编译->
1>sortdialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall SortDialog::metaObject(void)const " (?metaObject@SortDialog@@UBEPBUQMetaObject@@XZ)
1>sortdialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall SortDialog::qt_metacast(char const *)" (?qt_metacast@SortDialog@@UAEPAXPBD@Z)
1>sortdialog.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall SortDialog::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@SortDialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>sortdialog.obj : error LNK2019: 无法解析的外部符号 "public: static struct QMetaObject const SortDialog::staticMetaObject" (?staticMetaObject@SortDialog@@2UQMetaObject@@B),该符号在函数 "public: static class QString __cdecl SortDialog::tr(char const *,char const *,int)" (?tr@SortDialog@@SA?AVQString@@PBD0H@Z) 中被引用
1>C:\Users\HP\Desktop\qt\0\Win32\Release\\0.exe : fatal error LNK1120: 4 个无法解析的外部命令

三、重新建个工程->像原来那样把源文件,头文件,修好过的ui文件加入工程->编译->仍然成功运行!

希望大家帮忙!谢谢!!

离线雷小某

只看该作者 1楼 发表于: 2013-11-25
moc开头的文件为和移除?如果你只是简单的“构建”而不是“重新构建”,不会重新生成这些moc开头的文件,而这些文件和Qt的元对象系统有很大关系,比如你的信号槽功能实现。这些moc文件会在你的源代码做对应修改或者项目清理(即make clean)后才会再次生成。
快速回复
限100 字节
 
上一个 下一个