找回密码
 立即注册
收起左侧

Qt添加一个自己的类报错

7
回复
9630
查看
[复制链接]
累计签到:29 天
连续签到:1 天
来源: 2013-8-8 21:22:17 显示全部楼层 |阅读模式
1Qter豆
大家帮我看看这个错误,这是错误想必大家应该都遇到过吧。

我自己添加一个类,报了这个错误。

下面是我自己定义的类.h文件:
#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H
#include <QLineEdit>
class MyLineEdit : public QLineEdit{
   Q_OBJECT
public:   
explicit MyLineEdit(QWidget *parent = 0);
protected:
    void keyPressEvent(QKeyEvent *event);
signals:
public
slots:};#endif // MYLINEEDIT_H

下面是我自己定义的类.cpp文件:
#include "mylineedit.h"
#include <QKeyEvent>
#include <QDebug>
MyLineEdit::MyLineEdit(QWidget *parent) :    QLineEdit(parent)
{
}
void MyLineEdit::keyPressEvent(QKeyEvent *event){
    qDebug() << tr("MyLineEdit()按下了毽子") ;
    QLineEdit::keyPressEvent(event);    // 忽略该事件
    event->ignore();
}
下面是类mywidget.h文件:
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
namespace Ui {
class MyWidget;
}
class MyLineEdit;
class MyWidget : public QWidget{
    Q_OBJECT
public:
   explicit MyWidget(QWidget *parent = 0);
    ~MyWidget();
protected:
    void keyPressEvent(QKeyEvent *event);
private:
    Ui::MyWidget *ui;
    MyLineEdit *mylinedit;
};
#endif // MYWIDGET_H
下面是mywidget.cpp文件:
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QKeyEvent>
#include <QDebug>
MyWidget::MyWidget(QWidget *parent) :    QWidget(parent),    ui(new Ui::MyWidget){
    ui->setupUi(this);
    mylinedit = new MyLineEdit(this);
    mylinedit->move(100,100);
}
MyWidget::~MyWidget(){
    delete ui;
}
void MyWidget::keyPressEvent(QKeyEvent *event){
   // qDebug() << tr("MyWidget()按下了毽子") ;
}

麻烦大家帮我看俺哪里错了啊,我上网上查阅说的我都试过了还是没有解决。







附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

#ifndef MYLINEEDIT_H #define MYLINEEDIT_H #include class MyLineEdit : public QLineEdit{ public: explicit MyLineEdit(QWidget *parent = 0); protected: void keyPressEvent(QKeyEvent *event); };#endif // MYLINEEDIT_H 先改成这样试试。
回复

使用道具 举报

累计签到:181 天
连续签到:1 天
2013-8-8 21:22:18 显示全部楼层
#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H
#include <QLineEdit>
class MyLineEdit : public QLineEdit{
public:   
explicit MyLineEdit(QWidget *parent = 0);
protected:
    void keyPressEvent(QKeyEvent *event);
};#endif // MYLINEEDIT_H

先改成这样试试。
回复

使用道具 举报

累计签到:181 天
连续签到:1 天
2013-8-9 08:43:47 显示全部楼层
应该是有一些函数声明了但没有实现。你这代码也太乱了,能不能整理一下。
回复

使用道具 举报

累计签到:29 天
连续签到:1 天
2013-8-9 12:26:44 显示全部楼层
hzzhou 发表于 2013-8-9 08:43
应该是有一些函数声明了但没有实现。你这代码也太乱了,能不能整理一下。 ...

我整理了给贴出来的  谁知道会这样啊,请管理员弄一下格式啊。
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2013-8-9 14:05:15 显示全部楼层
从错误提示上来看,是类的虚表的一个问题,代码中没看见析构函数,加上试试
回复

使用道具 举报

累计签到:29 天
连续签到:1 天
2013-8-9 15:56:43 显示全部楼层
williamzhang 发表于 2013-8-9 14:05
从错误提示上来看,是类的虚表的一个问题,代码中没看见析构函数,加上试试 ...

你是说我自己添加的那个类吗?
我之前添加了~MyLineEdit();
也不行啊。
回复

使用道具 举报

累计签到:181 天
连续签到:1 天
2013-8-10 10:44:10 显示全部楼层
把编译生成的中.o文件删掉再编译试试。
回复

使用道具 举报

累计签到:29 天
连续签到:1 天
2013-8-10 12:36:38 显示全部楼层
hzzhou 发表于 2013-8-10 10:44
把编译生成的中.o文件删掉再编译试试。

试过了,还是不行。可能是头文件的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了