这些天C++与Qt一起学习,压力还是蛮大的!不过还好这个Qt视频演讲老师比较合我胃口哈哈,话不多说,上正文!
关于Qt中汉字乱码问题的解决方法
#include <QTextCodec>
QTextCodec *gbk = QTextCodec::codecForName("gb18030");
QTextCodec::setCodecForTr(gbk);
QTextCodec::setCodecForLocale(gbk);
QTextCodec::setCodecForCStrings(gbk);
第一行:定义gb18030编码格式
第二行: 这个函数的作用是设置传给tr函数时的默认字符串编码,GUI设计中最常用的一种。
第三行:这个函数主要用于设置和对本地文件系统读写时候的默认编码格式。比如通过流读取一个文件内容时的编码格式。或者通过qDebug()输出打印信息时的编码。
第四行:这个函数主要是用在字符常量或者QByteArray构造QString对象时使用的一种编码方式。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMessageBox>
#include <QTextCodec>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_loginButton_clicked();
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->passLineEdit->setEchoMode(QLineEdit::Password);//非明文显示密码(*******)
//on_loginButton_clicked()信号和槽的自动关联
//自动关联方式(例如上面):由on、部件的objectName和信号3部分组成,中间用下划线隔开
QObject::connect(ui->passLineEdit, SIGNAL(returnPressed()), this, SLOT(on_loginButton_clicked()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_loginButton_clicked()
{
//user:dls password:lsbixiaoxin
if (ui->userLineEdit->text() == "浮生流年" && ui->passLineEdit->text() == "12345678")
{
QMessageBox::information(this, "Congratulation", "Login Success");
//do something
}
else
{
QMessageBox::information(this, "Permission Deny!!", "Please Check User Or Password!");
return;
}
}
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//解决汉字乱码问题
QTextCodec *gbk = QTextCodec::codecForName("gb18030");
QTextCodec::setCodecForTr(gbk);
QTextCodec::setCodecForLocale(gbk);
QTextCodec::setCodecForCStrings(gbk);
MainWindow w;
w.show();
return a.exec();
}