|
1Qter豆
本帖最后由 lanbeilyj 于 2014-9-10 11:22 编辑
给位高手或者yafei老师您好!
我在参考书本的数据库管理系统项目时,遇到中文显示乱码,然后尝试将中文改为英文,依然显示会乱码;关于codecForName("UTF-8"/"GB2312"/"GBK"),codecForLocal(),等等都设置乱码依旧;最诧异的是中文改为英文了,也是乱码;
查看“工具”——”选项“——行为,中使用的编码显示是”UTF-8“,我的环境是:Qt4.8.5+Qtcreator 2.8.0+windows7;
如图:
部分代码如下:
//*********************************connection.h
#include <QtSql>#include <QDebug>static bool createConnection(){ QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("yafeilinux"); db.setDatabaseName("data.db"); db.setUserName("yafei"); db.setPassword("123456"); if (!db.open()) { //提示出错 return false; } QSqlQuery query;
// 创建分类表 query.exec("create table type(id varchar primary key, name varchar)"); query.exec(QString("insert into type values('0', '请选择类型')")); query.exec(QString("insert into type values('01', '电视')")); query.exec(QString("insert into type values('02', '空调')"));
// 创建品牌表 query.exec("create table brand(id varchar primary key, name varchar, " "type varchar, price int, sum int, sell int, last int)"); query.exec(QString("insert into brand values('01', '海信', '电视', 3699, 50, 10, 40)")); query.exec(QString("insert into brand values('02', '创维', '电视', 3499, 20, 5, 15)")); return true;}
//******************************************main.cpp
#include "widget.h"#include <QApplication>#include <QTextCodec>#include "connection.h"
int main(int argc, char *argv[]){ QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); //QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); //QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
if(!createConnection()) return 0;
Widget w; w.show(); return a.exec();}
//**************************************widget.cpp
#include "widget.h"#include "ui_widget.h"#include <QSqlQueryModel>
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); setFixedSize(750, 500); ui->stackedWidget->setCurrentIndex(0);
QSqlQueryModel *typeModel = new QSqlQueryModel(this); typeModel->setQuery("select name from type"); ui->sellTypeComboBox->setModel(typeModel);
QSplitter *splitter = new QSplitter(ui->managePage); splitter->resize(700, 360); splitter->move(0, 30);
splitter->addWidget(ui->toolBox); splitter->addWidget(ui->dailyList); splitter->setStretchFactor(0, 1); splitter->setStretchFactor(1, 1);}
Widget::~Widget(){ delete ui;}
|
最佳答案
查看完整内容
我也刚好学到这一章,遇到同样问题。解决如下:
1)用如下两行代码替换原代码:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
2)删除项目文件中的data.db
3)重新编译
|