【发布时间】:2019-03-05 16:46:10
【问题描述】:
我正忙于我的大学作业,我是 Qt、C++ 的新手,我需要: 在单独的头文件和源文件中定义和实现 Address 类
我对 Qt4 和 Qt5 感到困惑,因为规定的教科书提供了 Qt4 中的所有示例,但我们需要使用 Qt5 进行编码。 我不断收到错误,最新的错误是:
error: undefined reference to
Dialog7getTextEP7QWidgetRK7QStringS4_N9QLineEdit8EchoModeES4_
Pb6QFlagsIN2Qt10WindowTypeEES8_INS9_15InputMethodHintEE'
error: undefined reference to
MessageBox11informationEP7QWidgetRK7QStringS4_6QFlagsINS_
14StandardButtonEES6
collect2.exe:-1: error: error: ld returned 1 exit status
我很困惑和卡住,如果有人能引导我朝着正确的方向前进,我将不胜感激,这是我到目前为止的代码:
头文件:
#ifndef ADDRESS_H_
#define ADDRESS_H_
#include <QString>
#include <QFile>
#include <QStringList>
#include <QtCore>
QTextStream cout(stdout);
QTextStream cerr(stderr);
class Address{
public:
Address();
void setLines(QString ad, QString sep);
QString getPostalCode() const;
QString toString(QString sep) const;
static bool isPostalCode(QString pc);
private:
static QStringList lines;
};
#endif // ADDRESS_H_
主文件:
#include "address.h"
#include <iostream>
#include <QFile>
#include <sstream>
#include <fstream>
#include <QStringList>
#include <QString>
#include <QTextStream>
#include <QCoreApplication>
#include <QtWidgets/QInputDialog>
#include <QtWidgets/QMessageBox>
#include <QtWidgets/QLineEdit>
Address::Address(){}
void Address::setLines(QString ad, QString sep){
QStringList lines;
lines = ad.split(sep, QString::SkipEmptyParts);
}
QString Address::getPostalCode() const{
QStringList lines;
return lines.last();
}
QString Address::toString(QString sep) const{
QStringList lines;
return lines.join(sep);
}
bool Address::isPostalCode(QString pc){
if (pc >= "0" && pc <= "9999")
return true;
else
return false;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
while(true)
{
QString userInput = QInputDialog::getText(0,"Address Input","Please
enter your address:");
QLineEdit::EchoMode ok = QLineEdit::Normal;
QString();
if(ok && !userInput.isEmpty())
{
Address ad;
QMessageBox::information(0, "User Address",ad.toString(userInput));
}
}
return 0;
}
【问题讨论】:
-
您没有在 c++ 文件中定义
lines。这是静态变量所必需的。 -
您需要展示如何编译(尤其是链接)代码。您似乎忘记引用
Qt5Widgets库。 -
请参阅How do I ask a good question。此外,要求家庭作业是题外话here
-
我很抱歉让这个问题太长了,我只是想提供尽可能多的信息,因为我真的很挣扎。