我不能在Qt类之外的Qt 5.5中使用tr()

时间:2015-09-20 19:56:47

标签: c++ qt tr

我是一个小小的初学者,我在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

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

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