我有一個處理退出鍵按下的類。keypressevent及其過載
class KeyPress : public QWidget
{
Q_OBJECT
public:
KeyPress(QWidget * parent=0);
protected:
void keyPressEvent(QKeyEvent * event);
};
和.cpp文件:
void KeyPress::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Escape) {
qApp->quit();
}
}
它工作正常,但如果我改變了方法的名稱,說,keyPressed(QKeyEvent * event)
,這是行不通的。根據文檔的keyPressEvent(QKeyEvent * event)
方法是QWidget
的受保護方法。 因此,最初的代碼只是重載該方法,不是嗎?並且超負荷工作。但爲什麼具有其他名稱但實現相同的方法的全新版本不起作用?
對不起,這就是我的意思。 Ment覆蓋,父函數的不同實現,相同的簽名。但問題依然存在。爲什麼新方法不起作用? – parsecer
@parsecer我已經更新了我的答案。 – fghj
感謝您的回覆!但它仍然不完全清楚。是不是我的情況就像'Boo'中有一個'f2()'函數一樣,它和'f()'是'cout <<「foo:f \ n'完全相同。 'Boo'對象調用該函數並沒有什麼錯...... – parsecer