★【求帮助】linux上Qtcreator编程输出mysql数据库查询的结果时中文乱码

★【求帮助】linux下Qtcreator编程输出mysql数据库查询的结果时中文乱码
我用的是ubuntu,
先上图说明:
我是使用navicat图形界面管理mysql数据库的,数据库连接编码设置为UTF-8了:


数据库project也设置为UTF-8了






数据库project中的表student也设置为UTF-8了


表的内容


Qt creator的编码也设置为UTF-8了


但是输出从数据库中查询到的中文内容字符的时候还是乱码


本人Qt初学者,用了三天时间,网上查了很多资料,用了很多办法都不行啊,实在没办法,
只好发贴问,哪位大牛可以告诉我啊,万分感谢啊!

附源代码:

1、exp1.pro
C/C++ code

QT +=core gui sql
#TARGET =
#DEPENDPATH += .
#INCLUDEPATH += .
SOURCES += \
    main.cpp



2、main.cpp
C/C++ code

#include <QtCore/QCoreApplication>
#include <QtSql>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QString>

int main(int argc,char *argv[])
{


    QCoreApplication a(argc,argv);

    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);

    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("project");
    db.setUserName("root");
    db.setPassword("0");


    if(db.open())
    {
        qDebug()<<"database is established!";
    }
    else
    {
        qDebug()<<"build error!";
        return a.exec();
    }
    QSqlQuery query;
    query.exec(QObject::tr("select * from student"));
    QSqlRecord rec=query.record();
    int count=rec.count();
    qDebug()<<"Number of column:"<<count;

    while(query.next())
    {
        rec=query.record();
        int name=rec.indexOf("name");
        int card=rec.indexOf("card");
        int user=rec.indexOf("user");
        int password=rec.indexOf("password");
        int book =rec.indexOf("book");
        QString value1 =query.value(name).toString();
        QString value2 =query.value(card).toString();
        QString value3 =query.value(user).toString();
        QString value4 =query.value(password).toString();
        QString value5 =query.value(book).toString();
        qDebug()<<"name:"<<value1<<"\t"<<"card:"<<value2<<"\t"<<"user:"<<value3
                   <<"\t"<<"password:"<<value4<<"\t"<<"book:"<<"\t"<<value5;

    }
    query.clear();
    db.close();
    return a.exec();
}



------解决方案--------------------
http://ferret.blog.163.com/blog/static/64423780201151224151335/
楼主试这个了?
------解决方案--------------------
Qt 我操作多的是Oracle数据库 我习惯是读取中文字符添上
C/C++ code
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));//UTF-8 GBK
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));