我有一个类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);
错误位于最后一行。
答案 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);