2011-04-20 53 views
1

我有以下文件Qt计划的一部分:如何解决这些Qt错误?

checkabder.h

#include <QDialog> 
#include "ui_checkabder.h" 
class CheckAbder: public QDialog, public Ui::CheckAbder 
{ 
Q_OBJECT 
public: 
CheckAbder(QWidget *parent=0); 
private slots: 
void on_lineEdit_textChanged(); 
}; 

checkabder.cpp

#include <QtGui> 
#include "checkabder.h" 
CheckAbder::CheckAbder(QWidget *parent): QDialog(parent) 
{ 
setupUi(this); 
QRegExp regexp("Abder-Rahman"); 
QValidator *validator = new QRegExpValidator(regexp, this); 
lineEdit->setValidator(validator); 
connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); 
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); 
} 

void CheckAbder::on_lineEdit_textChanged() 
{ 
okButton->setEnabled(lineEdit->hasAcceptableInput()); 
} 

当我尝试运行应用程序,我得到以下错误:

C:/Users/avbder/Desktop/abder/debug/checkabder.o:-1:在功能`CheckAbder':

C:\用户\ avbder \桌面\ abder/checkabder.cpp:3 :错误:未定义参考`虚表为CheckAbder '

C:\用户\ avbder \桌面\ abder/checkabder.cpp:3:错误:未定义参考`虚表为CheckAbder'

C:\ Users \ avbder \ Desktop \ abder/checkabder.cpp:3:错误:未定义引用'vtable for CheckAbder'

C:\用户\ avbder \桌面\ abder/checkabder.cpp:3:错误:未定义参考`虚表为CheckAbder”

:-1:错误:collect2:LD返回1退出状态

关于如何解决这些问题的任何想法?

谢谢。

+0

样式提示:最好添加一个Ui :: CheckAbder * m_ui成员,而不是继承它。 – 2011-04-20 18:09:22

回答

1

它正在寻找第一个虚拟方法CheckAbder(..)的参考,它无法找到。

或者,它可能只是您的班级如何定义以及您的MOC文件的问题。看到这个blog post on undefined reference to vtable errors

+0

感谢您的回复。那么,在这种情况下我应该怎么做? – Simplicity 2011-04-20 15:53:07

+0

假设您正在使用Qt Creator,请转至Build> Run qmake,然后重新编译。 – 2011-04-20 16:54:33

+0

@Dave。感谢您的回复。现在错误消失了,但'connect'的功能不起作用。这是为什么? – Simplicity 2011-04-20 17:02:52