想实现的功能:
UI界面上有有三个控件:
lineEdit_1,lineEdit_2,lineEdit_3;
实现的功能是lineEdit_3=lineEdit_1+lineEdit_2 (算术相加功能)
上面是我写的代码,但
编译不过,望高手能帮我解决第一个入门的例子.
- //Ui_MyCalc.h
- #ifndef UI_MYCALC_H
- #define UI_MYCALC_H
- #include <QtCore/QVariant>
- #include <QtGui/QAction>
- #include <QtGui/QApplication>
- #include <QtGui/QButtonGroup>
- #include <QtGui/QLabel>
- #include <QtGui/QLineEdit>
- #include <QtGui/QWidget>
- class Ui_MyCalcForm
- {
- public:
- QLineEdit *lineEdit_1;
- QLabel *label;
- QLineEdit *lineEdit_2;
- QLabel *label_2;
- QLineEdit *lineEdit_3;
- void setupUi(QWidget *MyCalcForm)
- {
- if (MyCalcForm->objectName().isEmpty())
- MyCalcForm->setObjectName(QString::fromUtf8("MyCalcForm"));
- QSize size(400, 300);
- size = size.expandedTo(MyCalcForm->minimumSizeHint());
- MyCalcForm->resize(size);
- lineEdit_1 = new QLineEdit(MyCalcForm);
- lineEdit_1->setObjectName(QString::fromUtf8("lineEdit_1"));
- lineEdit_1->setGeometry(QRect(30, 40, 41, 20));
- label = new QLabel(MyCalcForm);
- label->setObjectName(QString::fromUtf8("label"));
- label->setGeometry(QRect(78, 43, 16, 16));
- lineEdit_2 = new QLineEdit(MyCalcForm);
- lineEdit_2->setObjectName(QString::fromUtf8("lineEdit_2"));
- lineEdit_2->setGeometry(QRect(90, 40, 41, 20));
- label_2 = new QLabel(MyCalcForm);
- label_2->setObjectName(QString::fromUtf8("label_2"));
- label_2->setGeometry(QRect(138, 42, 16, 16));
- lineEdit_3 = new QLineEdit(MyCalcForm);
- lineEdit_3->setObjectName(QString::fromUtf8("lineEdit_3"));
- lineEdit_3->setGeometry(QRect(150, 40, 41, 20));
- lineEdit_3->setReadOnly(true);
- retranslateUi(MyCalcForm);
- QMetaObject::connectSlotsByName(MyCalcForm);
- } // setupUi
- void retranslateUi(QWidget *MyCalcForm)
- {
- MyCalcForm->setWindowTitle(QApplication::translate("MyCalcForm", "Form", 0, QApplication::UnicodeUTF8));
- label->setText(QApplication::translate("MyCalcForm", "+", 0, QApplication::UnicodeUTF8));
- label_2->setText(QApplication::translate("MyCalcForm", "=", 0, QApplication::UnicodeUTF8));
- Q_UNUSED(MyCalcForm);
- } // retranslateUi
- };
- namespace Ui {
- class MyCalcForm: public Ui_MyCalcForm {};
- } // namespace Ui
- #endif // UI_MYCALC_H
- //MyCalc.h
- #ifndef MYCALC_H_INCLUDED
- #define MYCALC_H_INCLUDED
- #include "Ui_MyCalc.h"
- class MyCalcForm: public QWidget
- {
- Q_OBJECT
- public:
- MyCalcForm(QWidget *parent = 0);
- private slots:
- void on_lineEdit_1_textChanged(const QString &value);
- void on_lineEdit_2_textChanged(const QString &value);
- private:
- Ui::MyCalcForm ui;
- };
- #endif // MYCALC_H_INCLUDED
- //MyCalc.cpp
- #include <QtGui>
- #include "MyCalc.h"
- MyCalcForm::MyCalcForm(QWidget *parent)
- : QWidget(parent)
- {
- ui.setupUi(this);
- }
- void MyCalcForm::on_lineEdit_1_textChanged(const QString &value)
- {
- //ui.lineEdit_3->setText(value); //如果编译能正常通过,这个地方两数相加该怎么写?
- }
- void MyCalcForm::on_lineEdit_2_textChanged(const QString &value)
- {
- //ui.lineEdit_3->setText(value);
- }
- //main.cpp
- #include <QApplication>
- #include <qwidget.h>
- #include "MyCalc.h"
- int main(int argc, char* argv[])
- {
- QApplication app(argc, argv);
- MyCalcForm calculator;
- calculator.show();
- return app.exec();
- }
编译上面的代码会出现下面这样的错误:
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 ===|