冥界3大法王 发表于 2022-1-2 16:27

QT编译咋还是乱码?

test.pro
内容如下:
#-------------------------------------------------
#
# Project created by QtCreator 2021-12-30T20:59:13
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test2
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += main.cpp\
      mainwindow.cpp

HEADERS+= mainwindow.h

FORMS    += mainwindow.ui

win32: LIBS += -lpsapi



MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_comboBox_currentIndexChanged(const QString);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QTextCodec>


int main(int argc, char *argv[])
{
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");         =======================>加了,编译还是乱码,坑爹啊。
    QTextCodec::setCodecForLocale(codec);
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}


mainwindows.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <windows.h>
#include <psapi.h>
#include <QClipboard>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    DWORD pid;
      char buf;
      HWND h=GetForegroundWindow();
      GetWindowThreadProcessId(h,&pid);
      HANDLE hProc=OpenProcess(PROCESS_ALL_ACCESS,false,pid);
      GetModuleFileNameExA(hProc,(HMODULE)0,buf,sizeof(buf));
      CloseHandle(hProc);
      ui->lineEdit->setText(buf);
      setWindowTitle(buf);
      qApp->clipboard()->setText(buf);
}

void MainWindow::on_pushButton_2_clicked()
{
      ui->comboBox->addItem("中国");
      ui->comboBox->addItem("美国");
      ui->comboBox->addItem("日本");
}

void MainWindow::on_comboBox_currentIndexChanged(const QString)
{
//ui->comboBox->currentText();
    ui->lineEdit->setText(ui->comboBox->currentText()); //把获取到的comboBox值传给lineEdit
}


only998 发表于 2022-1-2 16:35

其实cpp文件本身的编码也很重要,看下cpp的编码是utf8的没。你可以试下直接给一个utf8编码的const char* 看看怎么样。

亡骨 发表于 2022-1-2 16:54

可以试试使用
QString::fromLocal8Bit("中国");

beavailable 发表于 2022-1-2 17:01

统一用 utf-8 就完事了。

duohappy 发表于 2022-1-2 17:57

1. 用qt creator
2. 在pro 文件中加上
win32-msvc* {
    QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
}
3. 所有源文件加上pro文件统一使用 utf-8 无bom

基本不会遇到乱码问题

endriver 发表于 2022-1-2 18:19

乱码也是我当初玩QT时,经常出现的问题

qwwpr 发表于 2022-1-2 18:55

编码问题?

冥界3大法王 发表于 2022-1-2 19:05

duohappy 发表于 2022-1-2 17:57
1. 用qt creator
2. 在pro 文件中加上
win32-msvc* {


@duohappy 按道友说的
加了,win10上还是乱码。

冥界3大法王 发表于 2022-1-2 19:09

亡骨 发表于 2022-1-2 16:54
可以试试使用
QString::fromLocal8Bit("中国");@亡骨
换成QT的不会改,求现成的。


乱码也是我当初玩QT时,经常出现的问题@endriver
是啊,这个狗屎工具不是驴不走,就是磨不转。
若是换成Delphi一上午搞的就差不多有点意思了,这个浪费了很多的时间。

冥界3大法王 发表于 2022-1-2 19:22


双击也不转到报错行,什么破工具。{:301_1006:}
页: [1] 2 3
查看完整版本: QT编译咋还是乱码?