Qt---一些常见问题处理(无法解析得外部符号,UI头文件找不到等)
- 格式:pdf
- 大小:71.47 KB
- 文档页数:2
Qt---⼀些常见问题处理(⽆法解析得外部符号,UI头⽂件找不到
等)
1.编译,出错,提⽰:
mainwindowprivate.obj:-1: error: LNK2001: ⽆法解析的外部符号 "public: virtual struct QMetaObject const *
__cdecl MainWindowPrivate::metaObject(void)const " (?
metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)
从QObject继承了⼀个类:
#ifndef MAINWINDOWPRIVATE_H
#define MAINWINDOWPRIVATE_H
#include "DockManager.h"
class MainWindowPrivate : public QObject
{
Q_OBJECT
public:
MainWindowPrivate();
virtual ~MainWindowPrivate();
public:
void initDockWidget(QWidget *widget);
private:
ads::CDockManager *DockManager;
};
#endif // MAINWINDOWPRIVATE_H
编译,出错,提⽰:
mainwindowprivate.obj:-1: error: LNK2001: ⽆法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl
MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)
解决办法:
编译出错是因为没有⽣成moc_mainwindowprivate.cpp⽂件造成的。
如果新添加QObject派⽣类到您的项⽬,则必须再次运⾏qmake,即
1、清理项⽬(⾮必须)
2、运⾏qmake(必须)
3、构建项⽬(必须)
否则,如果在QObject继承的类上进⾏增量构建,那么您将拥有过时的moc⽂件,或者⼲脆没有moc⽂件。
2.在UI设计界⾯不能通过添加槽函数来添加槽函数(。- 。)
类似于上⾯这个报错。
解决办法:
.对应 cpp 中include的头⽂件可能为⼤写 #include "ui_Dlg_CSP.h",导致添加槽时,找不到对应头⽂件,要⼿动改为⼩写。
Qt会根据 dlg_CSP.ui ⾃动⽣成⼀个ui_dlg_CSP.h,有时候改了UI后,没有⾃动重新⽣成,还是使⽤的旧的 .h。此时需要⼿动将旧的 .h删
掉,然后构建。
3.在UI设计界⾯不能通过添加槽函数来添加槽函数(。- 。)
因为mainwindow.cpp和testui.cpp两个cpp中都包含了ui_mainwindow.h导致的。
⾃动转到槽函数⼀定程度是看哪⾥包含了上⾯这个ui头⽂件的,有两处引⼊就不懂该在哪⾥添加头⽂件了,这时候去把想要加⼊槽函数以外
地⽅的ui头⽂件注释掉,添加完槽函数再解开注释就⾏。