• 我的Eclipse+Qt学习笔记


    这篇是我10年学习QT的一些学习笔记,和大家一起分享:

    1.      安装Qt

    1.1 安装qt和mingw

    到Qt(http://trolltech.com/developer/downloads/qt),直接下载qt-win-opensource-4.3.2-mingw.exe,安装即可。此版本已经集成了编译环境Mingw(注意:只是编译环境不包括IDE,Eclipse才是真正的IDE),在安装过程中选择自动下载并安装Mingw即可(如果你安装时没有选择安装Mingw那么你也可以手动安装)。

    1.2安装调试工具GDB

    首先下载GDB(http://jaist.dl.sourceforge.net/sourceforge/mingw/gdb-6.3-2.exe

    下载后安装到刚才安装MinGW的文件夹下。有了他才可以使用Eclipse的调试功能

    2.设置QT和Mingw的环境变量

    假设QT和Mingw目录分别是:

    D:\Qt\4.4.3;

    D:\MinGW;

    现在打开右键我的电脑,系统属性-高级-环境变量

    设置如下

    变量:Path

    值:D:\MinGW\bin; D:\Qt\4.4.3\bin; D:\MinGW\mingw32\bin;

    变量:Lib

    值:D:\MinGW\lib; D:\Qt\4.4.3\lib;

    变量:include

    值:D:\MinGW\include; D:\Qt\4.4.3\include;

    变量:QTDIR

    值:D: \Qt\4.4.3

    3.安装Eclipse

    3.1 Eclipse下载(http://www.eclipse.org/downloads/

    3.2 把QT和MinGW集成到Eclipse中

    下载Eclipse插件(http://trolltech.com/developer/downloads/qt/eclipse-integration-download

    在安装时选择你之前安装的Eclipse和MinGW的路径即可

    注意安装过程中遇到得问题:

    1、下载 mingw-utils,将其中的 reimp.exe 放到 Qt 自带的 MinGW 的 bin 目录下。
        2、mysql安装要全部安装,否则会不到lib和include目录。

    3、在c:下建一个mysql目录,将其安装目录下得lib和include复制过去

    4. MySQL 自带的 .lib 文件是为 VC 准备的,所以先要生成 MinGW 能认识的 .a 文件:
           C:\mysql\lib\opt>d:\Qt\2009.01\mingw\bin\reimp.exe libmysql.lib
          操作成功的话会生成 LIBMYSQL.def 和 liblibmysql.a。
        5. 编译 Qt 的 MySQL 驱动:
          D:\Qt\2009.01\qt\src\plugins\sqldrivers\mysql>qmake -o Makefile  "INCLUDEPATH+=C:/MYSQL/INCLUDE" "LIBS+=C:/MYSQL/LIB/OPT/liblibmysql.a" mysql.pro
          D:\Qt\2009.01\qt\src\plugins\sqldrivers\mysql>make

    见附图1.2.3.

     

    qt连接数据库测试:

    两种方式:1、dns 2、字符串 详细请看测试代码

    #include <QtGui>
    #include <QApplication>
    #include <QtSql>
    #include <QSqlDatabase>
    #include <QSqlQuery>
    #include <QTextCodec>
    #include <QStringList>
    #include <QDebug>
    #include <QSqlError>


    QString getMSSQLConnectionString(const QString &host, const QString &user,
      const QString &pass, const QString &dbname) {
     return QString("DRIVER={%1};SERVER=%2;DATABASE=%3;UID=%4;PWD=%5") .arg(
       "SQL Server") .arg(host).arg(dbname).arg(user).arg(pass);
    }

    static bool CreateMsSqlServerConn() {

     QSqlDatabase dbconn = QSqlDatabase::addDatabase("QODBC");

     QString
       dsn =
         QString(
           "Driver={sql server};server=LYQ-COM\\SQL2005;database=wgdb;uid=sa;pwd=111111");

     //dbconn.setDatabaseName("test");

     dbconn.setDatabaseName(dsn);

     dbconn.setHostName(QString("LYQ-COM\\SQL2005"));

     //dbconn.setPort(1433);

     dbconn.setUserName(QString("sa"));

     dbconn.setPassword(QString("111111"));

     bool r = dbconn.open();

     if (!r) {
      QMessageBox::critical(0, QObject::tr("Database Error"),
        dbconn.lastError().text() + dsn);
      return false;
     }

     QSqlQuery query = QSqlQuery(dbconn);

     QTextCodec *BianMa = QTextCodec::codecForName("GBK");

     ///query.exec("Insert into [tblTest] (F_cName,F_cSex) values('test','test')");

     query.exec(BianMa->toUnicode(
       "Insert into [tblTest] (F_cName,F_cSex) values('李四1','女1')"));

     /* QT4 中文乱码之解决
      *
      ///以下代码在E文XP环境下测试OK

      ////QTextCodec *TxtCode = QTextCodec::codecForName ("GBK");

      ///需要引用中文的地方如下:

      ///TxtCode ->toUnicode("中国System Starting...");
      */

     QMessageBox::critical(0, "test", "OK!!!");

     return true;
    }

    static bool CreateMySqlConnection() {

     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

     db.setHostName("localhost");

     db.setDatabaseName("wgdb");

     db.setUserName("root");

     db.setPassword("111111");

     if (!db.open()) {
      QMessageBox::critical(0, QObject::tr("Database Error"),
        db.lastError().text());
      return false;
     }

     QSqlQuery query;

     //query.exec("insert into book values( 3, 'title', 'author') ");

     query.exec("select `StrName`,`StrAge` from test1 ");

     while (query.next()) {

      QString title = query.value(0).toString();
      QString author = query.value(1).toString();

      QMessageBox::critical(0, title, author);

     }
     return true;
    }

    int main(int argc, char *argv[]) {
     QApplication a(argc, argv);

     QSqlDatabase db1 = QSqlDatabase::addDatabase("QODBC");
     db1.setDatabaseName(getMSSQLConnectionString("LYQ-COM\\SQL2005", "sa",
       "111111", "WGDB"));
     if (!db1.open()) {
      QMessageBox::critical(0, QObject::tr("Database Error Conn.."),
        db1.lastError().text());
     } else {
      QSqlQuery query1 = QSqlQuery(db1);

      QTextCodec *BianMa = QTextCodec::codecForName("GBK");

      ///query.exec("Insert into [tblTest] (F_cName,F_cSex) values('test','test')");

      query1.exec(BianMa->toUnicode(
        "Insert into [tblTest] (F_cName,F_cSex) values('李四1','女1')"));

      /* QT4 中文乱码之解决
       *
       ///以下代码在E文XP环境下测试OK

       ////QTextCodec *TxtCode = QTextCodec::codecForName ("GBK");

       ///需要引用中文的地方如下:

       ///TxtCode ->toUnicode("中国System Starting...");
       */

      QMessageBox::critical(0, "Insert Sucess!", "OK!!!");

     }

     qDebug() << "Available drivers:";
     QStringList drivers = QSqlDatabase::drivers();
     foreach(QString driver, drivers)
       qDebug() << "\t" << driver;

     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
     qDebug() << "ODBC driver valid?" << db.isValid();

     /*
      if (!CreateMsSqlServerConn()){
      return 1;
      }

      if (!CreateMySqlConnection()){
      return 1;
      }
      */
     AAA w;
     w.show();
     return a.exec();
    }

    
  • 相关阅读:
    205. Isomorphic Strings
    8 旋转数组的最小数字
    303. Range Sum Query
    70. Climbing Stairs
    HDU 5971 Wrestling Match (二分图)
    URAL 2019 Pair: normal and paranormal (STL栈)
    URAL 2021 Scarily interesting! (贪心+题意)
    URAL 2018 The Debut Album (DP)
    HDU 5236 Article (概率DP+贪心)
    HDU 5241 Friends (大数)
  • 原文地址:https://www.cnblogs.com/AriLee/p/1997279.html
Copyright © 2020-2023  润新知