QT将中文写入QString,不显示乱码

今天在QT里面用windows API获取窗口名称,有些窗口名称中有中文。如果直接将窗口名称存入QString,显示出来会有乱码。如何解决看下面的代码。

    HWND winHandle = GetForegroundWindow();
    int cTxtLen = GetWindowTextLength(winHandle);
    PSTR pszMem = (PSTR) VirtualAlloc((LPVOID) NULL,
                        (DWORD) (cTxtLen + 1), MEM_COMMIT,
                        PAGE_READWRITE);
    GetWindowText(winHandle, pszMem,
                        cTxtLen + 1);
    // pszMem可能含有中文字符。tmpName在初始化时必须要用QString::fromLocal8Bit,否则会出现乱码。
    QString tmpName = QString::fromLocal8Bit(pszMem);
    if(this->appName != tmpName){
        this->appName = tmpName;
        QDateTime time = QDateTime::currentDateTime();
        this->ui->textBrowser->append("\n");
        this->ui->textBrowser->append(time.toString("hh:mm:ss"));
        // 经过QString::fromLocal8Bit处理,显示在QTextBrowser中就不会有乱码。
        this->ui->textBrowser->append(this->appName);
    }
    VirtualFree(pszMem, 0, MEM_RELEASE);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值