ฉันมีคลาสต่อไปนี้ซึ่งจัดการการกดปุ่ม Escape
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
ดังนั้นโค้ดเริ่มต้นก็โอเวอร์โหลดวิธีการนั้นใช่ไหม และการโอเวอร์โหลดก็ใช้งานได้ แต่เหตุใดเวอร์ชันใหม่ของวิธีการที่มีชื่ออื่นแต่การใช้งานแบบเดียวกันจึงไม่ทำงาน