先贴源代码
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("中文")来修饰
初学,具体有许多不理解的地方,后续有什么新的理解再更新,也请指正