qt学习记录

main.cpp

#include "display_da.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
//  QApplication::addLibraryPath("./plugins");
    QApplication a(argc, argv);
    display_da w;
    w.show();
    return a.exec();
}

sql_interface.h

#ifndef SQL_INTERFACE_H
#define SQL_INTERFACE_H

#include <QString>
#include <QtCore>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQueryModel>
#include <QtGui/QMessageBox>
#include <qtableview.h>
#include <QtGui/QComboBox>
#include <qsqlerror.h>

class SqlClass : public QObject
{
    Q_OBJECT

private:
    QSqlDatabase* db;
    QString db_driver,host_name,db_name,user_name,pass_word;

public:
            SqlClass(QObject* parent = 0,
                QString Driver = "QODBC",QString HostName = "172.18.19.16",QString DbName = "db_wuliu",QString UserName = "sa",QString PassWd = "903198975");
    virtual ~SqlClass();

public:
    void query_sql(QComboBox *);
};
#endif  //SQL_INTERFACE_H

sql_interface.cpp

#include "sql_interface.h"

SqlClass::SqlClass(QObject* parent /* = 0 */, QString Driver /* = "QMYSQL" */,QString HostName /* = "localhost" */,QString DbName /* = "weixin_db" */,QString UserName /* = "root" */,QString PassWd /* = "123123" */) : QObject(parent),db_driver(Driver),host_name(HostName),db_name(DbName),user_name(UserName),pass_word(PassWd)
{
    db = &QSqlDatabase::addDatabase(db_driver);

    if( !db->isValid() ){
        qDebug()<< db->lastError().text();
    }

    db->setHostName(host_name);
    db->setDatabaseName("DRIVER={SQL SERVER};SERVER="+host_name+";DATABASE="+db_name);
    db->setUserName(user_name);
    db->setPassword(pass_word);

    if( !db->open() ){
        QMessageBox::warning(NULL,"database error","Cannot open DB",QMessageBox::Cancel);
    }
    else{
        QMessageBox::information(NULL,"connected database","please chose the game version",QMessageBox::Ok);
    }
}

void SqlClass::query_sql(QComboBox *need_add)
{
    QSqlQueryModel* result_model = new QSqlQueryModel();
    const QSqlDatabase& database= *db;
    result_model->setQuery("SELECT * from dbo.t_user",database);
    qDebug()<<database.lastError().text();
    need_add->setModel(result_model);
}

SqlClass::~SqlClass()
{
}

display_da.h

#ifndef DISPLAY_DA_H
#define DISPLAY_DA_H

#include <QtGui/QMainWindow>
#include "ui_display_da.h"
#include "sql_interface.h"

class display_da : public QMainWindow
{
    Q_OBJECT

private:
    Ui::display_daClass ui;
    SqlClass* mainSql;

public:
    display_da(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~display_da();
};

#endif // DISPLAY_DA_H

display_da.cpp

#include "display_da.h"

display_da::display_da(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);
    mainSql = new SqlClass(this);
    mainSql->query_sql(ui.select_gv_combo);
}

display_da::~display_da()
{

}

效果:

时间: 2024-12-31 04:32:43

qt学习记录的相关文章

Qt学习记录,QSortFilterProxyModel

QSortFilterProxyModel主要可实现按表的标头实现自动排序,及根据过滤条件过滤,具体的demo可以查看QT自带的Item views系列. 我的例子还没加上过滤. add_da(QAbstractItemModel* model,int &ID,const QString& Description,const QString& Type){ model->insertRow(0); model->setData(model->index(0,0),

Qt学习记录--Qt::CaseSensitive

Qt::CaseSensitivity 为枚举类型, 可取值Qt::CaseSensitive 和 Qt::CaseInsensitive, 表示匹配的灵敏度. 比较字符串的时候 Qt::CaseSensitive区分大小写 Qt::CaseInSensitive不区分大小写 例如:void findPrevious(const QString &str,Qt::CaseSensitivity cs); 这个函数想要带一个const QString &str字符串参数,而后面跟的Qt::C

qt学习记录-----4.qt定时器

两种开启定时器方式 一.开启多个定时器 添加头文件 设置三个定时器,并设置定时时间 定时器溢出,调用定时器事件处理函数 二.只需少量定时器,采用信号和槽的方式 实现槽函数

【qt学习005】搞不明白的布局

记录一下自己在布局这一章遇见的各种狗屎问题. 问题主要出现在布局最后一节:综合布局实例,类似于一个qq管理器的界面(见下图1).看见这个时,打算动手实现一下,于是开始写代码,写着写着发现不知道怎么写了,遇见一些无法解决的问题(问题中描述的布局类之间的关系见下图2): 1. 最底层应该使用哪一类? 2. 怎么将QListWidget加入到最底层? 3. 怎么往QStackWidget加入三个页面,每个页面代表不同的信息? 4. 怎么将QHBoxLayout中的CLOSE按钮连接到退出函数,要完整地

【qt学习】开篇

重新开始学习qt,在年前已经看过一些知识点,但毫无进展,始终停留在知识点的阶段,或许有qt考试的话,我可以考得不错.然而学习qt,更多的是为了实战应用,并将其变成自己的兵器. 开始学习之前,先说说早前的一个困惑--为什么学习qt?最初学习qt,是因为身边朋友的强烈推荐,他说通过学习图形界面编程可以提高c++编程能力,而图形界面编程无非两种,一种MFC,另一种就qt了,MFC极其变态,想要简单快速,就学qt吧,于是我就开始看qt了.没过多久我有些动摇了,随着互联网时代的来临,编程方式正在慢慢改变,

Qt学习(7)

Qt学习(7)——Hello Designer 上一节的 Hello Widget 例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用 C++ 代码编写的.窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了. 用 C++ 代码编写图形界面的问题就是不直观,因此 Qt 项目开发了专门的可视化图形界面编辑器—— Qt Designer, 即 Qt 设计师.通过设计师就可以很方便地创建图形界面文件 *.ui ,然后将 ui 文件应用到源代码里面,做到所见即所得(

qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏,主机是mini2440,分辨率是800*480,程序写比較粗糙,但对刚開始学习的人还是有一点启示,大家一起进步. qt中提供了QGphicsView,QGraphicsScene,QGraphicsItem,QGraphicsPixmapItem是QGraphicsItem的子类 分辨创建它们的实

Python学习记录-2016-12-17

今日学习记录 模块: import os#导入os模块 import sys#导入sys模块 os.system("df -h")#执行df -h命令 cmd_res = os.popen("df -h").read()#将命令的返回结果赋值给cmd_res,如果不加入.read()会显示命令的返回加过在内存的位置 print(sys.path)#显示系统变量路径,一般个人模块位于site-packages下,系统模块位于lib下 print(sys.argu[2]

Objc基础学习记录5

NSMutableString类继承的NSString类. NSMutableString是动态的字符串. 1.appendingString 方式: 向字符串尾部添加一个字符串. 2.appendingFormat:可以添加多个类型的字符串. int,chat float,double等 3.stringWithString 创建字符串, 4.rangeOfString 返回str1在另一个字符串中的位置. 5.NSMakeRange(0,3) 字符串0位到3位. 6.deleteCharac