• 6207阅读
  • 1回复

[提问]请问怎样让QT建的数据表可以显示中文 [复制链接]

上一主题 下一主题
离线zhaowanlan
 
只看楼主 倒序阅读 楼主  发表于: 2011-08-17
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
     在QT中建了张数据表,在建表时输入的是中文,但是显示时却是乱码。后来百度,知道QT默认的编码(unicode)是不能显示中文的,需要来更改QT程序的编码。但是因为不太会编码,按找到的例子加入[font='Courier New', monospace] [font='Courier New', monospace]QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));然后修改一些代码后还是不行。可能是我学QT的时间不长,改的不对。但是究竟需要对源代码进行哪些修改才行呢?还要请高人指点一下啊~~~
我的源代码:
  1. 以下是头文件内容:
  2. #ifndef CONNECTION_H
  3. #define CONNECTION_H
  4. #include <QTextCodec>
  5. #include <QTranslator>
  6. #include <QMessageBox>
  7. #include <QSqlDatabase>
  8. #include <QSqlError>
  9. #include <QSqlQuery>
  10. #include <QString.h>
  11. /*
  12.     This file defines a helper function to open a connection to an
  13.     in-memory SQLITE database and to create a test table.
  14.     If you want to use another database, simply modify the code
  15.     below. All the examples in this directory use this function to
  16.     connect to a database.
  17. */
  18. //! [0]
  19. static bool createConnection()
  20. {   QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
  21.     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
  22.     db.setDatabaseName(":memory:");
  23.     if (!db.open()) {
  24.         QMessageBox::critical(0, qApp->tr("Cannot open database"),
  25.             qApp->tr("Unable to establish a database connection.\n"
  26.                      "Click Cancel to exit."), QMessageBox::Cancel);
  27.         return false;
  28.     }
  29.     QSqlQuery query;
  30.     query.exec("create table tr(气虚) (tr(适宜) varchar(20), "              
  31.                "tr(少吃) varchar(20), tr(忌吃) varchar(20))");
  32.    query.exec("insert into QiXu values(tr('豆子'), tr('银耳'),tr( '薏仁粉'))");
  33.     。。。。。。
  34.     return true;
  35. }
  36. //! [0]
  37. #endif
  38. 我看有些欢迎界面显示中文的例子中说,使用中文要用tr(),但是我这么写有错,编译都没通过,不过我又不知道在数据表中应该怎么写~~~
  39. 然后是源文件:
  40. #include <QTextCodec>#include <QTranslator>#include <QtGui>#include <QtSql>#include "../connection1.h"void initializeMode1(QSqlTableModel *model1){model1->setTable(tr("气虚"));model1->setEditStrategy(QSqlTableModel::OnManualSubmit);model1->select();}QTableView *createView(QSqlTableModel *model,const QString &title = ""){QTableView *view = new QTableView;view->setModel(model);#if defined(Q_OS_SYMBIAN) || defined(Q_WS_MAEMO_5) || defined(Q_WS_SIMULATOR)Q_UNUSED(title)#elseimages->setWindowTitle(title);#endifreturn 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(&model2), "气虚");tabWidget->showMaximized();#elseQTableView *images = createView(&model1, QObject::tr("Table Model (气虚)"));气虚->show();#endifreturn app.exec();}

呃,我知道给一大段代码让人帮忙看很拙也很白,不过我确实是个菜鸟小白,看了帮助文档还是不会用那个tr()函数,能不能请高人给点提示啊?
  
离线dbzhang800

只看该作者 1楼 发表于: 2011-08-17
快速回复
限100 字节
 
上一个 下一个