首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Qt 電子鐘示例:QLCDNumber 未定義編譯錯誤的頭文件缺失排查

     編輯:程式設計疑難解答

錯誤現場

代碼繼承 `QLCDNumber`,編譯報錯「`QLCDNumber` 未定義 / 找不到類型」。

根因

缺少頭文件引用:`QLCDNumber` 定義在 `` 或 `` 中,源文件未包含。

修正方法

// digiclock.h
#ifndef DIGICLOCK_H
#define DIGICLOCK_H

#include    // 關鍵:單獨引入,或 #include 
#include 
#include 

class DigiClock : public QLCDNumber {
    Q_OBJECT
public:
    DigiClock(QWidget *parent = nullptr);
protected:
    void mousePressEvent(QMouseEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;
private slots:
    void showTime();
private:
    QTimer *timer;
    QPoint dragPosition;
    bool showColon = true;
};

#endif // DIGICLOCK_H

Qt 模組化頭文件對照表 (Qt 5/6)

類別推薦頭文件模組
QLCDNumber`#include `QtWidgets
QWidget, QDialog, QMainWindow`#include ` 等QtWidgets
QTimer, QObject, QThread`#include ` 等QtCore
QNetworkAccessManager`#include `QtNetwork
所有 Widgets 類`#include `QtWidgets (整體)

.pro / CMakeLists.txt 確保模組鏈接

# .pro
QT += widgets   # 必須包含 widgets 模組

# CMakeLists.txt
find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(myapp PRIVATE Qt6::Widgets)

常見衍生錯誤

  • `Q_OBJECT` 宏缺失 → `moc` 生成失敗,信號槽不工作。
  • 槽函數未聲明 `private slots:` / `public slots:` → 連接失敗。
  • `timer` 未 `new` 或未 `start()` → 定時器不觸發。
  • 拖拽邏輯中 `dragPosition` 計算錯誤 → 視窗跳躍。

**Qt 編程第一原則:報錯「未定義類型」先查頭文件,報錯「未定義引用」再查 `.pro`/`CMake` 模組鏈接。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved