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
}
其实cpp文件本身的编码也很重要,看下cpp的编码是utf8的没。你可以试下直接给一个utf8编码的const char* 看看怎么样。 可以试试使用
QString::fromLocal8Bit("中国"); 统一用 utf-8 就完事了。 1. 用qt creator
2. 在pro 文件中加上
win32-msvc* {
QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
}
3. 所有源文件加上pro文件统一使用 utf-8 无bom
基本不会遇到乱码问题
乱码也是我当初玩QT时,经常出现的问题 编码问题? duohappy 发表于 2022-1-2 17:57
1. 用qt creator
2. 在pro 文件中加上
win32-msvc* {
@duohappy 按道友说的
加了,win10上还是乱码。 亡骨 发表于 2022-1-2 16:54
可以试试使用
QString::fromLocal8Bit("中国");@亡骨
换成QT的不会改,求现成的。
乱码也是我当初玩QT时,经常出现的问题@endriver
是啊,这个狗屎工具不是驴不走,就是磨不转。
若是换成Delphi一上午搞的就差不多有点意思了,这个浪费了很多的时间。
双击也不转到报错行,什么破工具。{:301_1006:}