Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重写QTextEdit子类中的keyPressEvent_C++_Qt_Qtextedit_Qkeyevent - Fatal编程技术网

C++ 重写QTextEdit子类中的keyPressEvent

C++ 重写QTextEdit子类中的keyPressEvent,c++,qt,qtextedit,qkeyevent,C++,Qt,Qtextedit,Qkeyevent,我在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); signa

我在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
#ifndef TXT_H
#定义TXT_H
#包括
类txt:公共QTextEdit
{
Q_对象
公众:
txt(QWidget*parent=0);
信号:
无效按键事件(QKeyEvent*e);
公众时段:
};
#endif//TXT_H
//txt.cpp
#包括“txt.h”
txt::txt(QWidget*父项):
QTextEdit(父级)
{
}
void txt::keyPressEvent(QKeyEvent*e){
//处理关键事件
}
//main.cpp
#包括
#包括“txt.h”
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
txt w;
w、 show();
返回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:

};

我不敢相信有那么简单。。。非常感谢你的帮助!C++编译器错误可能是如此神秘: