Qt5 中文乱码 以及C2001错误问题(换行、}这种)

先贴源代码

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
 
    aboutAct=new QAction(QIcon(":/new/prefix1/phososhop_new.png"),tr("&A关于"),this);
    connect(aboutAct,SIGNAL(triggered()),this,SLOT(about()));
 
    aboutMenu=menuBar()->addMenu(QString("&A关于"));
    aboutMenu->addAction(aboutAct);
 
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_actionO_triggered()
{
 
    QMessageBox::information(this,"消息","选择了打开菜单栏");
}
 
void MainWindow::on_action_S_triggered()
{
    QMessageBox::information(this,"消息","选择了打开菜单项");
}
 
void MainWindow::on_action_E_triggered()
{
    QMessageBox::information(this,"消息","选择了退出菜单项");
    close();
}
 
void MainWindow::about()
{
    //输入
    QMessageBox::about(this,"消息","选择了菜单项");
}
 首先解决了C2001问题,方案如下: 

问题的原因在于文件的编码 UTF-8不带BOM。(环境是Qt5.8+cl编译器)

有关内容在一些前辈的文章里说了许多,虽然还有不太理解的地方,算是能够解决问题了。

解决方案一是 工具——选项——文本编辑器——行为 选择BOM那个添加;二是用记事本打开用UTF-8编码另存为替换(亲测)。

如果多个.h .cpp文件需要转换编码 使用notepad++之类的软件可以解决。

其次,编译后发现,菜单栏上的关于显示为黑框:

尝试了多种改变编码的办法不能解决;

于是通过神奇的预处理

#pragma execution_character_set("utf-8")添加到.h头文件上,解决了。

然后另一种方法 没有自测

QStringLiteral("中文")来修饰

初学,具体有许多不理解的地方,后续有什么新的理解再更新,也请指正




  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值