我不能在 Qt 类 之外的 Qt 5.5 中使用 tr()
I can't use tr() in Qt 5.5 outside the Qt classes
我是个小白,在Qt中实现tr函数遇到了问题。如果我在 Qt 类 之外使用 tr("string") ,我就会出错。
我发现信息,我应该在 tr() 之前使用 QObject::,但是如果我尝试使用
temp += QObject::tr("Example"); // temp is std::string
我遇到错误
C2679: binary '+=' : no operator found which takes a right-hand operand of type 'QString' (or there is no acceptable conversion)
另一个例子:
QString filename="example.txt";
QFile log(QDir::currentPath() + "//" + filename);
if ( log.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text) )
{
QTextStream plik( &log );
plik.setCodec("UTF-8");
(...)
plik << QString::fromUtf8(QObject::tr("Example2")); // Error
}
我遇到错误
C2665: 'QString::fromUtf8' : none of the 2 overloads could convert all the argument types
谁能帮我解决这个问题?
Qt 有很多访问器,QString::toStdString() 也有。
temp += QObject::tr("Example").toStdString(); // temp is std::string
对于流需要转换为 Utf8 字节数组:
plik << QObject::tr("Example2").toUtf8(); // fixed
甚至更好accepts QString。
plik << QObject::tr("Example2"); // will do
我是个小白,在Qt中实现tr函数遇到了问题。如果我在 Qt 类 之外使用 tr("string") ,我就会出错。 我发现信息,我应该在 tr() 之前使用 QObject::,但是如果我尝试使用
temp += QObject::tr("Example"); // temp is std::string
我遇到错误
C2679: binary '+=' : no operator found which takes a right-hand operand of type 'QString' (or there is no acceptable conversion)
另一个例子:
QString filename="example.txt";
QFile log(QDir::currentPath() + "//" + filename);
if ( log.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text) )
{
QTextStream plik( &log );
plik.setCodec("UTF-8");
(...)
plik << QString::fromUtf8(QObject::tr("Example2")); // Error
}
我遇到错误
C2665: 'QString::fromUtf8' : none of the 2 overloads could convert all the argument types
谁能帮我解决这个问题?
Qt 有很多访问器,QString::toStdString() 也有。
temp += QObject::tr("Example").toStdString(); // temp is std::string
对于流需要转换为 Utf8 字节数组:
plik << QObject::tr("Example2").toUtf8(); // fixed
甚至更好accepts QString。
plik << QObject::tr("Example2"); // will do