覆盖QTextEdit子类中的keyPressEvent



我在Qt中有以下例子,我试图覆盖QTextEdit子类的keyPressEvent,但给了我一个"txt::keyPressEvent(QKeyEvent*)的多重定义",我不明白为什么:

//txt.h
#ifndef TXT_H
#define TXT_H
#include <QTextEdit>
class txt : public QTextEdit
{
    Q_OBJECT
public:
    txt(QWidget *parent = 0);
signals:
    void keyPressEvent(QKeyEvent *e);
public slots:
};
#endif // TXT_H

//txt.cpp
#include "txt.h"
txt::txt(QWidget *parent) :
    QTextEdit(parent)
{
}
void txt::keyPressEvent(QKeyEvent *e){
    //do stuff with the key event
}

//main.cpp
#include <QtGui/QApplication>
#include "txt.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    txt w;
    w.show();
    return a.exec();
}

我试着在txt.h中声明QTextEdit,并#仅将其包含在cpp中,但这给了我一些其他错误(可能是因为我需要在头中使用该类,因为我正在将其子类化?)

不管怎样,我做错了什么?

编辑:我也在另一个类(QLabel)中尝试过,现在我得到了同样的错误。。。

问题是您将其声明为一个信号。这应该可以找到:

class txt : public QTextEdit
{
    Q_OBJECT
public:
    txt(QWidget *parent = 0);
protected:
    virtual void keyPressEvent(QKeyEvent *e);
public slots:
};

相关内容

  • 没有找到相关文章

最新更新