Qt Designer 中右鍵按鈕 →「轉到槽」→ 選擇 clicked() → 確定,產生槽函式並自動連接。直接編譯報錯,但手寫 connect 卻正常。
專案路徑包含**中文、空格、特殊符號**(如放在「桌面/我的專案」),導致 moc (Meta-Object Compiler) 處理生成的 moc_xxx.cpp 時路徑解析失敗,產生編譯錯誤。
D:/Projects/MyQtApp 或 C:/Dev/QtApp。moc_ 開頭檔案是否正常生成於 build/ 目錄。.pro 檔是否有 CONFIG += c++11 等必要設定。手寫 connect(sender, &Sender::signal, receiver, &Receiver::slot) 使用**函式指標語法 (Qt5 新語法)**,編譯期直接檢查,**不經過 moc 生成字串比對**,故不受路徑編碼影響。但 Designer 自動連接使用**舊式字串語法** SLOT(on_btn_clicked()),依賴 moc 生成中繼資料,故受路徑影響。
connect(ui->pushButton, &QPushButton::clicked, this, &MyClass::onButtonClicked);Qt Designer 自動產生的信號槽編譯失敗,90% 是**專案路徑含中文/空格**導致 moc 失效。移至純英文路徑並 Clean/Rebuild 即可解決。建議改用新式 connect 語法避免類似問題。