• qt的安装及连接sql使用注意


    qt安装与使用
    今天写下qt使用的注意事项,qt-project.org上已经更新了qt5的相关库,但是建议不是很熟系qt的朋友,或者说想使用传统qt api而不是qml的朋友,
    继续下载老版本4.8.4。因为有很多参考例子与书籍。
    其实只是做一个简单的sql文件导入作用,本来不想做的很粗糙,但是领导给的时间少,胡乱摸了几把,勉强做了一个简单的界面。主要构思与总结将在
    工作完成后补上。
    现在说说做的时候遇到的问题:
    1.C++封装问题
        之前一直用C,也大概了解C++,我在qt中都是纯代码实现(因为比较喜欢敲键盘的感觉),但是qt中最重要的就是c++的关系,表现为写了很多控件,运行时不报错,但是没显示出来,我想了想,实际上我也是在主窗口的构造函数中创建的,但是没有指定他们的父窗口是谁,所以造成上述错误。这里的注意就是:可以把界面话的qt想成一个大型继承链条(因为他们都继承于QObject),一旦其中一个控件没有控制在这个链条内,那么就会出问题。
    2.sql头文件加载问题
        明明是原原本本的参考各种例子写的代码,一直就是报找不到符号的错误,原来是需要改pro文件
    QT       += core gui sql//这里添加sql
    3.mysql.h头文件路径问题
        由于我的mysql是我从源码编译来的,所以他并没有在标准路径下,qt找不到mysql.h


    额外需要连接的连接库
    unix:LIBS += -L your_lib_path -lyour_lib
    win32:LIBS += your_lib_path/your_lib


    额外需要的头文件目录
    INCLUDEPATH += your_include_path
    4.mysql驱动加载问题
    QSqlDatabase: QMYSQL driver not loaded
    QSqlDatabase: available drivers: QSQLITE

    *************************解决方法1***********************************
    解决方法1,先看下是否已经安装了libqsqlmysql.so

    [test1@localhost ~]$ locate libqsqlmysql.so

    /var/cache/abrt-di/usr/lib/debug/usr/lib/qt4/plugins/sqldrivers/libqsqlmysql.so.debug

    我的系统上还没有安装,下面安装 qt-mysql.i686。

    [root@localhost test1]# yum install qt-mysql.i686
    类似的 我的系统中就这样找 sudo apt-cache search qt | grep mysql
    libqt4-sql-mysql - Qt 4 MySQL database driver
    $ locate libqsqlmysql.so

    /usr/lib/qt4/plugins/sqldrivers/libqsqlmysql.so

    /var/cache/abrt-di/usr/lib/debug/usr/lib/qt4/plugins/sqldrivers/libqsqlmysql.so.debug

    在程序里面调用

    qDebug()<<QCoreApplication::libraryPaths ();

    可以看到Qt 搜索库的路径。里面并没有/usr/lib/qt4/plugins/

    这里有两种方式解决这个问题:

    1、把libqsqlmysql.so所在的路径增加到库路径里面:

         QcoreApplication::addLibraryPath("/usr/lib/qt4/plugins/");

    2、直接复制libqsqlmysql.so到Qt的搜索路径中。

    [test1@localhost ~]$ cp /usr/lib/qt4/plugins/sqldrivers/libqsqlmysql.so QtSDK/Desktop/Qt/4.8.1/gcc/plugins/sqldrivers/
    *************************解决方法1***********************************
    以上方法有时候不太管用,主要原因猜测是版本不对
    *************************解决方法2***********************************
    first we should remember some paths.
    qt source code path:~/Download/qt-everywhere-opensource-src-4.8.4
    qmake path:/opt/qt4/bin (in fact, it is already in system path environment)
    mysql include path:/usr/include/mysql (it must contain mysql.h)
    mysql lib path:
    $ ll libmysqlclient_r.so
    lrwxrwxrwx 1 root root 17 May 23 03:58 libmysqlclient_r.so -> libmysqlclient.so
    $ pwd
    /usr/lib/i386-linux-gnu
    CANNOT find it? anyway, follow me!
    $cd /usr/
    $find -name "*mysqlclient_r*"
    ./lib/i386-linux-gnu/libmysqlclient_r.a
    ./lib/i386-linux-gnu/libmysqlclient_r.so
    ./lib/i386-linux-gnu/libmysqlclient_r.so.18.0.0
    ./lib/i386-linux-gnu/libmysqlclient_r.so.18
    got it!
    ok it's time to compile mysql driver for qt now!
    $cd $(QTPATH)//src/plugins/sqldrivers/mysql/
    $sudo $(QMAKEPATH)/qmake -o Makefile "INCLUDEPATH=$(MYSQL INCLUDE PATH)" "LIBS = -L $(MYSQL LIB PATH) -lmysqlclient_r" mysql.pro
    $sudo make
    $sudo make install
    (NOTE:remember the output path)
    install -m 755 -p "../../../../plugins/sqldrivers/libqsqlmysql.so" "
    /usr/lib/i386-linux-gnu/qt4/plugins/sqldrivers/libqsqlmysql.so"


    it's not in standard qt creator search path yet!
    $sudo cp ../../../../plugins/sqldrivers/libqsqlmysql.so /opt/qt4/plugin/sqlderivers/

    *************************解决方法2***********************************

    我实际上是用方法二解决的问题!非常感谢大家包容我的椒盐英语。

    主要参考:

    http://www.qtcentre.org/threads/45296-QSqlDatabase-QMYSQL-driver-not-loaded

    http://blog.csdn.net/e3399/article/details/7614348

  • 相关阅读:
    阿里云POLARDB荣膺2019中国数据库年度最佳创新产品
    实时大数据开发难、运维难、应用难?来,一站解决!
    阿里云应用实时监控 ARMS 再升级,支持 Prometheus 开源生态
    一线实践 | 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
    使用DataX同步MaxCompute数据到TableStore(原OTS)优化指南
    Twitter 宣布抛弃 Mesos,全面转向Kubernetes
    阿里云Kubernetes服务上使用Tekton完成应用发布初体验
    Knative Tracing 介绍
    不断被取代的传统职业:快速发展的智能交互
    bzoj1433: [ZJOI2009]假期的宿舍
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3194266.html
Copyright © 2020-2023  润新知