kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!

开发基于GTK+或QT的应用程序
回复
头像
nick198119
帖子: 215
注册时间: 2008-08-23 15:00
送出感谢: 0
接收感谢: 1 次
联系:

kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!

#1

帖子 nick198119 » 2011-01-02 17:08

这段时间正在学习qt4编程。用继承开发环境kdevelop4。
我测试《精通Qt4编程》第二章“对话框QDialog"的第一个例子,就是一个验证用户密码是否正确的对话框程序。我按照源码输入,在命令行下qmake -project;qmake;make;构建正确,程序正常运行。
但是我用vim总不利索,决定用kdevelop4开发,初始测试第一章的helloworld程序正常,于是测试上述程序。创建对应的QtGui工程后,在kdevelop中工程侧栏中自动生成的两个不必要的源文件,重新创建新类(新类名为CLoginDlg,继承自QDialog),尝试过创建时从选择QDialog public继承,并在函数重写中勾选相应的需要复写的函数,然后按照书中代码完成相应源文件。
最后构建,却总是出现错误

代码: 全选

Linking CXX executable loginTest2
CMakeFiles/loginTest2.dir/main.cpp.o: In function `main':
/home/uli/Project/qt/loginTest2/main.cpp:11: undefined reference to `CLoginDlg::CLoginDlg(QWidget*)'
CMakeFiles/loginTest2.dir/main.cpp.o: In function `~CLoginDlg':
/home/uli/Project/qt/loginTest2/clogindlg.h:27: undefined reference to `vtable for CLoginDlg'
/home/uli/Project/qt/loginTest2/clogindlg.h:27: undefined reference to `vtable for CLoginDlg'
collect2: ld returned 1 exit status
make[2]: *** [loginTest2] Error 1
make[1]: *** [CMakeFiles/loginTest2.dir/all] Error 2
make: *** [all] Error 2
*** 失败 ***
我将工程目录中的三个源文件拷贝出来,在命令行下qmake -project;qmake;make构建,成功!运行成功。
kdevelop使用的是cmake构建程序,我成功用它构建了第一章的例子,在这里却出错了,谁用过kdevelop的能告诉我要怎么做???
万分感谢!

附上三个源程序代码:
clogindlg.h

代码: 全选

#ifndef CLOGINDLG_H
#define CLOGINDLG_H

#include <QtGui/QDialog>
class QLineEdit;

class CLoginDlg : public QDialog
{
  Q_OBJECT
public:
    CLoginDlg(QWidget* parent = 0);
public slots:
  virtual void accept();
private:
  QLineEdit* usrLineEdit;
  QLineEdit* pwdLineEdit;
};

#endif // CLOGINDLG_H
clogindlg.cpp

代码: 全选

#include "clogindlg.h"
#include <QtGui/QtGui>

CLoginDlg::CLoginDlg(QWidget* parent ): QDialog(parent)
{
  QLabel* usrLabel = new QLabel(tr("用户名:"));
  QLabel* pwdLabel = new QLabel(tr("密码:"));
  usrLineEdit = new QLineEdit;
  pwdLineEdit = new QLineEdit;
  pwdLineEdit->setEchoMode(QLineEdit::Password);
  
  QGridLayout* gridLayout = new QGridLayout;
  gridLayout->addWidget(usrLabel,0,0,1,1);
  gridLayout->addWidget(usrLineEdit,0,1,1,3);
  gridLayout->addWidget(pwdLabel,1,0,1,1);
  gridLayout->addWidget(pwdLineEdit,1,1,1,3);
  
  QPushButton* okBtn = new QPushButton(tr("确定"));
  QPushButton* cancelBtn = new QPushButton(tr("取消"));
  QHBoxLayout* btnLayout = new QHBoxLayout;
  btnLayout->setSpacing(60);
  btnLayout->addWidget(okBtn);
  btnLayout->addWidget(cancelBtn);
  
  QVBoxLayout* dlgLayout = new QVBoxLayout;
  dlgLayout->setMargin(40);
  dlgLayout->addLayout(gridLayout);
  dlgLayout->addStretch(40);
  dlgLayout->addLayout(btnLayout);
  setLayout(dlgLayout);
  
  connect(okBtn,SIGNAL(clicked()),this,SLOT(accept()));
  connect(cancelBtn,SIGNAL(clicked()),this,SLOT(reject()));
  
  setWindowTitle(tr("登录"));
  resize(300,200);
}

void CLoginDlg::accept()
{
  if(usrLineEdit->text().trimmed() == tr("lcf")
    && pwdLineEdit->text() == tr ("lcf"))
  {
    QDialog::accept();
  }
  else
  {
    QMessageBox::warning(this,tr("警告"),tr("用户或密码错误!"),
			 QMessageBox::Yes);
    usrLineEdit->setFocus();
  }
    
}



main.cpp

代码: 全选

#include <QtGui/QtGui>
#include <QtGui/QApplication>
#include "clogindlg.h"


int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
    
    CLoginDlg dlg;
    return dlg.exec();
}
头像
nick198119
帖子: 215
注册时间: 2008-08-23 15:00
送出感谢: 0
接收感谢: 1 次
联系:

Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!

#2

帖子 nick198119 » 2011-01-02 19:22

找到原因了:
在创建类的过程中,填写继承时,将public关键字和父类QDialog放在两行了,结果成了从public和Qdialog继承,并且没有继承关键字。
奇怪的是如此明显的输入错误,Kdevelop没有提示任何输入错误,而且对不熟悉kdevelop的开发者,那个对话框似乎设计得也不够人性化,容易引起误导。

我是如此添加继承关系导致出错的,截图如下:
附件
截图1.png
lilong8470
帖子: 3
注册时间: 2011-04-07 17:36
送出感谢: 0
接收感谢: 0

Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!

#3

帖子 lilong8470 » 2011-04-07 17:39

您好,我在学QT,也是买一本《精通QT4编程》,现在开发环境还没构建起来,请问您是用的哪个linux版本,kdevelop版本是什么版本,希望您可以指导一下,多谢啦,我的QQ77413811
头像
lexdene
帖子: 434
注册时间: 2010-02-21 16:19
来自: 大连
送出感谢: 1 次
接收感谢: 2 次
联系:

Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!

#4

帖子 lexdene » 2011-04-07 19:16

我有一年的Qt开发经验。
不过我用的IDE不是KDevelop,而是Qt官方提供的QtCreator。
期待与您交流。
lilong8470
帖子: 3
注册时间: 2011-04-07 17:36
送出感谢: 0
接收感谢: 0

Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!

#5

帖子 lilong8470 » 2011-04-08 10:13

lexdene 写了:我有一年的Qt开发经验。
不过我用的IDE不是KDevelop,而是Qt官方提供的QtCreator。
期待与您交流。
您好,向您学习,呵呵,正在学习中,给您发邮件了!
回复

回到 “GTK+和QT”