一、看到 LNK2019 无法解析外部符号
👉 99% = 头文件声明了函数,.cpp 没写函数体
例子:
plaintext
MainWindow::on_ageChanged(int)
- 头文件有:
void on_ageChanged(int); - cpp 里没有:
void MainWindow::on_ageChanged(int){}
口诀:LNK2019 = 有头无身
二、看到 C2664 无法从 XXX 转换为 YYY
👉 类型不匹配
你之前遇到:
plaintext
QWidget* 不能转 QMainWindow*
- 继承写错了
还有:
plaintext
QString 不能转 int
Q_PROPERTY类型乱绑
口诀:C2664 = 类型对不上
三、看到 moc_xxx.cpp 报错
👉 一定是 .h 里的信号、槽、Q_PROPERTY 写错了
moc 文件不是你写的 ,是 Qt 自动生成的。它报错 = 你的类定义、信号槽、属性语法违规。
口诀:moc 报错 = 头文件信号槽 / 属性错
四、看到 QObject::connect: No such slot
👉 槽函数名字写错、参数不匹配、没有加 slots:
口诀:No such slot = 槽不存在 / 名字错
五、看到 Undefined reference to vtable
👉 纯虚函数没实现 或 类没有 moc 编译 最常见:忘记运行 qmake
口诀:vtable 错 = 清理、重新 qmake
六、看到 No such signal
👉 信号名字或参数不对
plaintext
signals:
void ageChanged(int);
连接时写成 ageChanged(QString) → 报错
口诀:No such signal = 参数 / 名字不匹配
七、看到 Qt Designer 界面不生效
👉 没调用 ui->setupUi (this) 或 基类不匹配
你之前就是:
- UI 是 QMainWindow
- 类继承 QWidget→ 直接爆炸
口诀:UI 基类必须和代码继承一致
八、看到 程序崩溃 + 报错 SIGSEGV
👉 野指针、访问空对象、delete 多次
最常见:
ui->btn->setText("");但 btn 还没创建- 对象没 new 就用
口诀:崩溃 = 空指针 / 越界