没有匹配的函数来调用'QString :: fromLatin1(QByteArray *&)'

时间:2018-07-11 16:35:02

标签: c++ qt qstring qbytearray

我有一个类A,该类在发出信号后调用类B。当用户关闭B时,我正在尝试将QString的值从B转移到A。为此,我首先将QString转换为QByteArray,然后在类之间交换QByteArray。最后,我将QByteArray转换回QString

但是,在第二次转换过程中,出现此错误:

  

没有用于调用'QString :: fromLatin1(QByteArray *&)'的匹配函数

下面是我的代码。

classB.h(是第一个QByteArray的实现位置):

public :
    QByteArray *byt = new QByteArray;

classB.cpp

void classB::foo(QString userame, QString password)
{
    //Some other code
    QString usernameOfNewUser;
    usernameOfNewUser = userame;
    byt = usernameOfNewUser.toLocal8Bit();
    qWarning(byt->data());
}

classA.h(实施第二个QByteArray的地方):

private:
    QByteArray *newUserArray = new QByteArray;

classA.cpp(问题所在的位置):

classB *cUdsfqkjb =new classB();
cUdsfqkjb->show();
if(!cUdsfqkjb->isVisible())
{
    newUserArray = cUdsfqkjb->byt;
    QString newUser = QString::fromLatin1(newUserArray);

错误位于最后一行。

1 个答案:

答案 0 :(得分:2)

fromLatin1()方法具有以下签名:

QString fromLatin1(const char * str, int size = -1)

因此,您需要将QByteArray的数据传递给这样的方法:

QString newUser = QString::fromLatin1(newUserArray->constData(), newUserArray->count());

在Qt5中,也有此重载:

QString fromLatin1(const QByteArray &str)

因此您可以改用它:

QString newUser = QString::fromLatin1(*newUserArray);