当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!
帖子发表于 : 2011-01-02 17:08 
头像

注册: 2008-08-23 15:00
帖子: 215
送出感谢: 0 次
接收感谢: 1
这段时间正在学习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();
}


页首
 用户资料  
 
2 楼 
 文章标题 : Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!
帖子发表于 : 2011-01-02 19:22 
头像

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

我是如此添加继承关系导致出错的,截图如下:


附件:
截图1.png
截图1.png [ 27.72 KiB | 被浏览 1295 次 ]

页首
 用户资料  
 
3 楼 
 文章标题 : Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!
帖子发表于 : 2011-04-07 17:39 

注册: 2011-04-07 17:36
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
您好,我在学QT,也是买一本《精通QT4编程》,现在开发环境还没构建起来,请问您是用的哪个linux版本,kdevelop版本是什么版本,希望您可以指导一下,多谢啦,我的QQ77413811


页首
 用户资料  
 
4 楼 
 文章标题 : Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!
帖子发表于 : 2011-04-07 19:16 
头像

注册: 2010-02-21 16:19
帖子: 434
地址: 大连
送出感谢: 1
接收感谢: 2
我有一年的Qt开发经验。
不过我用的IDE不是KDevelop,而是Qt官方提供的QtCreator。
期待与您交流。


_________________
大连Linux User Group: http://groups.google.com/group/dalian-lug?hl=zh-CN


页首
 用户资料  
 
5 楼 
 文章标题 : Re: kdevelop4 构建qt程序出错,而命令行qmake构建正确,求助!
帖子发表于 : 2011-04-08 10:13 

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

您好,向您学习,呵呵,正在学习中,给您发邮件了!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译