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

No matching function for call to 'QString::fromLatin1(QByteArray*&)'

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

但是,在第二次转换期间,我收到此错误:

no matching function for call to '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);

错误位于最后一行。

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);