私はエスケープキープレスを扱う次のクラスを持っています。 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
の保護された方法である。 最初のコードはそのメソッドをオーバーロードしていませんか?そして、過負荷が働く。しかし、別の名前で同じ実装の全く新しいバージョンのメソッドが動作しないのはなぜですか?
申し訳ありませんが、それは私の言いたいことです。私は、親の機能の異なる実装、同じ署名を上書きします。しかし、疑問はまだ残っています。なぜ新しい方法がうまくいかないのですか? – parsecer
@parsecer私は自分の答えを更新しました。 – fghj
返信いただきありがとうございます!しかし、それはまだ完全にはっきりしていません。私の状況は、 'foo(foo:f \ n')と同じことをした' Boo'に 'f2()'関数があったのと同じですか?その関数を呼び出す 'Boo'オブジェクトには何も間違ってはいけません... – parsecer