'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);
我有一个 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);