zoukankan      html  css  js  c++  java
  • 我的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();
    }

    
  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/AriLee/p/1997279.html
Copyright © 2011-2022 走看看