• 5628阅读
  • 3回复

请帮忙看下这段程序问题出在哪?(刚从Delphi转QT,第一个例子) [复制链接]

上一主题 下一主题
离线csm55
 

只看楼主 倒序阅读 楼主  发表于: 2008-11-19
— 本帖被 XChinux 执行加亮操作(2008-11-20) —
想实现的功能:
UI界面上有有三个控件:
lineEdit_1,lineEdit_2,lineEdit_3;
实现的功能是lineEdit_3=lineEdit_1+lineEdit_2 (算术相加功能)
上面是我写的代码,但编译不过,望高手能帮我解决第一个入门的例子.

  1. //Ui_MyCalc.h
  2. #ifndef UI_MYCALC_H
  3. #define UI_MYCALC_H
  4. #include <QtCore/QVariant>
  5. #include <QtGui/QAction>
  6. #include <QtGui/QApplication>
  7. #include <QtGui/QButtonGroup>
  8. #include <QtGui/QLabel>
  9. #include <QtGui/QLineEdit>
  10. #include <QtGui/QWidget>
  11. class Ui_MyCalcForm
  12. {
  13. public:
  14.     QLineEdit *lineEdit_1;
  15.     QLabel *label;
  16.     QLineEdit *lineEdit_2;
  17.     QLabel *label_2;
  18.     QLineEdit *lineEdit_3;
  19.     void setupUi(QWidget *MyCalcForm)
  20.     {
  21.     if (MyCalcForm->objectName().isEmpty())
  22.         MyCalcForm->setObjectName(QString::fromUtf8("MyCalcForm"));
  23.     QSize size(400, 300);
  24.     size = size.expandedTo(MyCalcForm->minimumSizeHint());
  25.     MyCalcForm->resize(size);
  26.     lineEdit_1 = new QLineEdit(MyCalcForm);
  27.     lineEdit_1->setObjectName(QString::fromUtf8("lineEdit_1"));
  28.     lineEdit_1->setGeometry(QRect(30, 40, 41, 20));
  29.     label = new QLabel(MyCalcForm);
  30.     label->setObjectName(QString::fromUtf8("label"));
  31.     label->setGeometry(QRect(78, 43, 16, 16));
  32.     lineEdit_2 = new QLineEdit(MyCalcForm);
  33.     lineEdit_2->setObjectName(QString::fromUtf8("lineEdit_2"));
  34.     lineEdit_2->setGeometry(QRect(90, 40, 41, 20));
  35.     label_2 = new QLabel(MyCalcForm);
  36.     label_2->setObjectName(QString::fromUtf8("label_2"));
  37.     label_2->setGeometry(QRect(138, 42, 16, 16));
  38.     lineEdit_3 = new QLineEdit(MyCalcForm);
  39.     lineEdit_3->setObjectName(QString::fromUtf8("lineEdit_3"));
  40.     lineEdit_3->setGeometry(QRect(150, 40, 41, 20));
  41.     lineEdit_3->setReadOnly(true);
  42.     retranslateUi(MyCalcForm);
  43.     QMetaObject::connectSlotsByName(MyCalcForm);
  44.     } // setupUi
  45.     void retranslateUi(QWidget *MyCalcForm)
  46.     {
  47.     MyCalcForm->setWindowTitle(QApplication::translate("MyCalcForm", "Form", 0, QApplication::UnicodeUTF8));
  48.     label->setText(QApplication::translate("MyCalcForm", "+", 0, QApplication::UnicodeUTF8));
  49.     label_2->setText(QApplication::translate("MyCalcForm", "=", 0, QApplication::UnicodeUTF8));
  50.     Q_UNUSED(MyCalcForm);
  51.     } // retranslateUi
  52. };
  53. namespace Ui {
  54.     class MyCalcForm: public Ui_MyCalcForm {};
  55. } // namespace Ui
  56. #endif // UI_MYCALC_H



  1. //MyCalc.h
  2. #ifndef MYCALC_H_INCLUDED
  3. #define MYCALC_H_INCLUDED
  4. #include "Ui_MyCalc.h"
  5. class MyCalcForm: public QWidget
  6. {
  7.     Q_OBJECT
  8. public:
  9.     MyCalcForm(QWidget *parent = 0);
  10. private slots:
  11.     void on_lineEdit_1_textChanged(const QString &value);
  12.     void on_lineEdit_2_textChanged(const QString &value);
  13. private:
  14.     Ui::MyCalcForm ui;
  15. };
  16. #endif // MYCALC_H_INCLUDED


  1. //MyCalc.cpp
  2. #include <QtGui>
  3. #include "MyCalc.h"
  4. MyCalcForm::MyCalcForm(QWidget *parent)
  5.     : QWidget(parent)
  6. {
  7.     ui.setupUi(this);
  8. }
  9. void MyCalcForm::on_lineEdit_1_textChanged(const QString &value)
  10. {
  11.   //ui.lineEdit_3->setText(value);  //如果编译能正常通过,这个地方两数相加该怎么写?
  12. }
  13. void MyCalcForm::on_lineEdit_2_textChanged(const QString &value)
  14. {
  15.   //ui.lineEdit_3->setText(value);
  16. }


  1. //main.cpp
  2. #include <QApplication>
  3. #include <qwidget.h>
  4. #include "MyCalc.h"
  5. int main(int argc, char* argv[])
  6. {
  7.     QApplication app(argc, argv);
  8.     MyCalcForm calculator;
  9.     calculator.show();
  10.     return app.exec();
  11. }


编译上面的代码会出现下面这样的错误:
Debug\main.o||In function `ZSt17__verify_groupingPKcjRKSs':|
E:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2498|undefined reference to `vtable for MyCalcForm'|
E:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\locale_facets.tcc|2499|undefined reference to `vtable for MyCalcForm'|
Debug\MyCalc.o||In function `ZN10MyCalcFormC2EP7QWidget':|
E:\QtTest\MyCalc\MyCalc.cpp|7|undefined reference to `vtable for MyCalcForm'|
E:\QtTest\MyCalc\MyCalc.cpp|7|undefined reference to `vtable for MyCalcForm'|
Debug\MyCalc.o||In function `ZN10MyCalcFormC1EP7QWidget':|
E:\QtTest\MyCalc\MyCalc.cpp|7|undefined reference to `vtable for MyCalcForm'|
Debug\MyCalc.o:E:\QtTest\MyCalc\MyCalc.cpp|7|more undefined references to `vtable for MyCalcForm' follow|
||=== Build finished: 6 errors, 0 warnings ===|
附件: MyCalc.rar (283 K) 下载次数:6
离线wvins
只看该作者 1楼 发表于: 2008-11-19
兄弟,很遗憾的告诉你
你的代码我编译通过,而且运行了。

是连接错误,你大概Qt没有装好
离线vrcats
只看该作者 2楼 发表于: 2008-11-20
是不是工程文件里没有假如MyCalcForm.cpp?
离线csm55

只看该作者 3楼 发表于: 2008-11-20
TO:wvins
不会吧,那我运行QT里面的DEMO都可以正常编译与运行啊,怎么运行我自己的代码会不行呢?
快速回复
限100 字节
 
上一个 下一个