Я не могу использовать tr () в Qt 5.5 вне классов Qt

Я немного новичок, и у меня проблема с реализацией функции tr в Qt. Если я использую tr («string») вне классов Qt, я получаю ошибки.
Я нашел информацию, что я должен использовать QObject :: перед tr (), но если я попытаюсь сделать это с

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

Решение

Qt имеет так много аксессоров и QString :: toStdString () также.

temp += QObject::tr("Example").toStdString(); // temp is std::string

для потока необходимо преобразовать либо в байтовый массив Utf8:

plik << QObject::tr("Example2").toUtf8(); // fixed

или даже лучше принимает QString также.

plik << QObject::tr("Example2"); // will do
3

Другие решения


По вопросам рекламы [email protected]