QT仿照MFC读取INI文件(支持中文)

#include <QSettings> 
#include <QtGui> 
UINT SEGetPrivateProfileInt(LPCSTR lpAppName, LPCSTR lpKeyName,  
    INT nDefault, LPCSTR lpFileName) 

    UINT nReturn = nDefault; 
    QString strDefault, strItem, strSection, strKey; 
    strItem = ""; 
    strDefault.sprintf("%d", nDefault); 
 
    QTextCodec *codec = QTextCodec::codecForName("GB2312"); 
    QSettings Setting(lpFileName, QSettings::IniFormat);     
    Setting.setIniCodec(codec);     
    strSection = QString::fromLatin1(lpAppName, strlen(lpAppName)); 
    strKey = QString::fromLatin1(lpKeyName, strlen(lpKeyName)); 
    strItem.append(strSection); 
    strItem.append("/"); 
    strItem.append(strKey); 
     nReturn = Setting.value(strItem, strDefault).toUInt(); 
    return nReturn; 

 
DWORD SEGetPrivateProfileString(LPCSTR lpAppName, LPCSTR lpKeyName,   
    LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName) 

    DWORD dwLen = 0; 
    QString strReturn; 
    QString strDefault, strItem, strSection, strKey; 
    strItem = ""; 
    strDefault = lpReturnedString; 
 
    QTextCodec *codec = QTextCodec::codecForName("GB2312"); 
    QSettings Setting(lpFileName, QSettings::IniFormat);     
    Setting.setIniCodec(codec);     
    strSection = QString::fromLatin1(lpAppName, strlen(lpAppName)); 
    strKey = QString::fromLatin1(lpKeyName, strlen(lpKeyName)); 
    strItem.append(strSection); 
    strItem.append("/"); 
    strItem.append(strKey); 
     strReturn = Setting.value(strItem, strDefault).toString(); 
 
    QByteArray ba = strReturn.toAscii(); 
    char *lpszData = ba.data(); 
    dwLen = strlen(lpszData); 
    dwLen = dwLen > nSize ? nSize : dwLen; 
    strncpy(lpReturnedString, lpszData, dwLen); 
    return dwLen; 
}