2015-04-23 51 views
2

我在C++和Qt Creator中編程,我的代碼完美工作。儘管如此,我還是遇到了編譯我的代碼時出現警告的問題。沒有插槽,但QMetaObject :: connectSlotsByName錯誤使用Qt和C++

QMetaObject::connectSlotsByName: No matching signal for on_but_PrintTab_clicked() 

曾經有()名爲on_but_PrintTab_clicked的狹槽,但它不再存在。我怎樣才能擺脫這個警告?

回答

1

有一個connect()打電話試圖連接到on_but_PrintTab_clicked的某個地方。只需搜索「on_but_PrintTab_clicked」並刪除此電話即可connect()

1

Qt的autoconnect mechanism試圖信號用的形式連接到對象的插槽:

void on_<object name>_<signal name>(<signal parameters>); 

所以在這裏它試圖找到具有clicked信號,將其連接到您的插槽名稱but_PrintTab對象。但是沒有這樣的事情,它會輸出警告。

如果您有這樣的插槽,您應該將其名稱更改爲其他名稱以避免此警告。

如果按鈕和插槽不再存在,請嘗試再次在您的項目上運行qmake並將其解決。

0

要麼更改函數的名稱,要麼不在公共/專用槽中聲明該函數,而是將其聲明爲public或private。