c++
  • qt
  • tr
  • 2015-09-20 66 views 1 likes 
    1

    我有點初學者,並且在Qt中實現tr函數時遇到問題。如果我在Qt類之外使用tr(「字符串」),我會收到錯誤。 我找到的信息,我應該在TR()之前使用的QObject ::,但如果我嘗試我不能在Qt類以外的Qt 5.5中使用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 
    

    任何人都可以幫我解決這個問題嗎?

    回答

    3

    Qt有這麼多訪問者和QString::toStdString()以及。

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

    的流需要或者轉換爲UTF-8字節數組:

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

    甚至更​​好它accepts QString的爲好。

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

    C2660:'QString :: toUtf8':函數不帶1個參數是否有另一個修正? – km2442

    +0

    修正了第一種情況。 – AlexanderVX

    +0

    好的,它的工作原理 - 謝謝。但是我的問題的第一個錯誤呢?我有20個像這樣的錯誤... – km2442

    相關問題