新浪微博
腾讯微博
会员列表
统计排行
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
首页
论坛
Qt下载
作品展
群组
个人中心
捐赠、管理与开发
邮件订阅
帖子
文章
日志
用户
版块
群组
帖子
搜索
QTCN开发网
>
Qt中文处理
>
请问怎样让QT建的数据表可以显示中文
发帖
回复
返回列表
新帖
5417
阅读
2
回复
[提问]
请问怎样让QT建的数据表可以显示中文
[复制链接]
上一主题
下一主题
离线
zhaowanlan
UID:116616
注册时间
2011-05-10
最后登录
2011-08-28
在线时间
17小时
发帖
10
搜Ta的帖子
精华
0
金钱
100
威望
20
贡献值
0
好评度
10
访问TA的空间
加好友
用道具
新手上路
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
加关注
发消息
只看楼主
倒序阅读
楼主
发表于: 2011-08-17
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
关键词:
初学者的问题
新手
我在QT中建了张
数据
表,在建表时输入的是中文,但是
显示
时却是
乱码
。后来百度,知道QT默认的编码(unicode)是不能显示中文的,需要来更改QT程序的编码。但是因为不太会编码,按找到的例子加入 QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));然后修改一些代码后还是不行。可能是我学QT的时间不长,改的不对。但是究竟需要对源代码进行哪些修改才行呢?还要请高人指点一下啊~~~
我的源代码:
以下是头文件内容:
复制代码
#ifndef CONNECTION_H
#define CONNECTION_H
#include <QTextCodec>
#include <QTranslator>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QString.h>
/*
This file defines a helper function to open a connection to an
in-memory SQLITE database and to create a test table.
If you want to use another database, simply modify the code
below. All the examples in this directory use this function to
connect to a database.
*/
//! [0]
static bool createConnection()
{ QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if (!db.open()) {
QMessageBox::critical(0, qApp->tr("Cannot open database"),
qApp->tr("Unable to establish a database connection.\n"
"Click Cancel to exit."), QMessageBox::Cancel);
return false;
}
QSqlQuery query;
query.exec("create table tr(气虚) (tr(适宜) varchar(20), "
"tr(少吃) varchar(20), tr(忌吃) varchar(20))");
query.exec("insert into QiXu values(tr('豆子'), tr('银耳'),tr( '薏仁粉'))");
。。。。。。
return true;
}
//! [0]
#endif
我看有些欢迎界面显示中文的例子中说,使用中文要用tr(),但是我这么写有错,编译都没通过,不过我又不知道在数据表中应该怎么写~~~
然后是源文件:
#include <QTextCodec>
#include <QTranslator>
#include <QtGui>
#include <QtSql>
#include "../connection1.h"
void initializeMode1(QSqlTableModel *model1)
{
model1->setTable(tr("气虚"));
model1->setEditStrategy(QSqlTableModel::OnManualSubmit);
model1->select();
}
...然后建立视图view指向“气虚”表。
QTableView *createView(QSqlTableModel *model,const QString &title = "")
{
。。。
return view;
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
if (!createConnection())
return 1;
QSqlTableModel model1;
initializeMode1(&model1);
#if defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR)
QTabWidget *tabWidget = new QTabWidget;
tabWidget->addTab(createView(&model1), tr("气虚"));
tabWidget->showMaximized();
......
#endif
return app.exec();
}
呃,我知道给一大段代码让人帮忙看很拙也很白,不过我确实是个菜鸟小白,看了帮助文档还是不会用那个tr()函数,能不能请高人给点提示啊?
共
条评分
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
zzjin
UID:96829
注册时间
2010-05-08
最后登录
2018-10-27
在线时间
52小时
发帖
119
搜Ta的帖子
精华
0
金钱
164528
威望
16462
贡献值
0
好评度
16452
访问TA的空间
加好友
用道具
禁止发言
加关注
发消息
只看该作者
1楼
发表于: 2011-08-18
不仅仅是tr需要修改.要把local和string的编码都改正了.
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
共
条评分
回复
举报
离线
绿叶无忧
UID:122415
注册时间
2011-09-22
最后登录
2011-10-07
在线时间
2小时
发帖
1
搜Ta的帖子
精华
0
金钱
10
威望
11
贡献值
0
好评度
1
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
2楼
发表于: 2011-09-22
我也遇到过这种情况,有时候是编码的问题,你也可以试试 gb18030 或者是 UTF-8,和gbk
共
条评分
回复
举报
发帖
回复
返回列表
http://www.qtcn.org/bbs
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限100 字节
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
关闭
补充发布信息
验证码:
发 布
隐藏
快速跳转
站务及资讯
网站公告
新闻资讯
Qt官方发布
网站管理
Qt应用及资源
Qt 作品展
Qt代码秀
Qt应用版
Qt技术讨论区
Qt安装与发布
Qt中文处理
Qt基础编程
Qt QML开发
Qt嵌入式开发
Qt移动平台开发
其它技术开发讨论区
Qt图书专区
《C++ GUI Qt 4编程》(第2版)专栏
《Qt高级编程》专栏
《零基础学Qt4编程》专栏
《Qt设计模式》(第2版) 图书专栏
Python Qt GUI快速编程
Qt项目开发区
天池项目
Qt开放平台开发库
Qt版百度云笔记
机械CAD
Qt文档计划
QTCN网站系统开发
扇贝词典
非活跃项目区
社区中心
帖子回收站(Trash)
招聘、求职、供求、广告等
休闲娱乐
关闭
关闭
选中
1
篇
全选