C++之Qt编程初级

    好久没有时间更新博客了,主要学习了C++面向对象编程的思想运用到Qt编程中去,初级水平练练手,开发环境是Linux+Mysql+QtCreator

   小作品可以理解为基于QT框架写的数据库连接,Qt开发等内容,让我们能够借助Qt的方便快捷迅速理解C++编程,由于本人长期接受Android Java的开发习惯,导致一开始很不适应,慢慢学习的过程中你会发现C++给人编程的感觉就是每一步都要很清楚,每一个指针变量都得清楚在哪分配怎么去运用,这些习惯在java的开发环境下是很难学习到的。

   编程思想是相同的,让我们感受下C++带来的Qt之美,不得不说QT的确很方便。






主要逻辑代码主要是界面的绘制和standardItemModel与tabView的创建

ScriptDialog::ScriptDialog(QWidget *parent) :
    QDialog(parent)
{
    isClickOk = false;
    label = new QLabel;
    label->setText(tr("Enter SQL"));

    textEdit = new QTextEdit;
    yesButton = new QPushButton;
    yesButton->setText(tr("OK"));
    noButton = new QPushButton;
    noButton->setText(tr("NO"));

    QGridLayout* gridLayout = new QGridLayout(this);
    gridLayout->addWidget(label,0,0);
    gridLayout->addWidget(textEdit,0,1);

    QHBoxLayout* boxLayout = new QHBoxLayout;
    boxLayout->addWidget(yesButton);
    boxLayout->addWidget(noButton);

    gridLayout->addLayout(boxLayout,1,1);

    connect(yesButton, SIGNAL(clicked()), this, SLOT(yesButtonOnclick()));
    connect(noButton, SIGNAL(clicked()), this, SLOT(noButtonOnclick()));

}

void ScriptDialog::yesButtonOnclick(){
    isClickOk = true;
    sqlTxt = textEdit->toPlainText();
    close();

}

void ScriptDialog::noButtonOnclick(){
    close();
}

数据库逻辑封装类

#include "ownmysql.h"
#include <stdlib.h>
#include <stdio.h>
#include <QMessageBox>
#include <string.h>

OwnMysql::OwnMysql()
{
    mysql_init(&mysql);
    mySqlConnection = NULL;
    memset(bufMsg,0,sizeof(bufMsg));
}

int OwnMysql::sql_connect(const char* Hostname,const char* Username,const char* Passward,const char* DBName){
    mySqlConnection = mysql_real_connect(&mysql,Hostname,Username,Passward,DBName,0,0,0);
    if(mySqlConnection == NULL){
        memset(bufMsg,0,sizeof(bufMsg));
        strcpy(bufMsg,mysql_error((&mysql)));
        return -1;
    }else{
        return 0;
    }
}

void OwnMysql::sql_disconnect(){
    if(mySqlConnection != NULL){
      mysql_close(mySqlConnection);
      mySqlConnection = NULL;

    }
}

int OwnMysql::sql_exec(const char *Sql){
    if(mysql_query(mySqlConnection,Sql) != 0){
        memset(bufMsg,0,sizeof(bufMsg));
        strcpy(bufMsg,mysql_error(&mysql));
        return -1;
    }
    return 0;

}

int OwnMysql::sql_exec_open(const char *Sql, QStandardItemModel **model){
    if(Sql != NULL && model != NULL){
       if(mysql_query(mySqlConnection,Sql) != 0){
           memset(bufMsg,0,sizeof(bufMsg));
           strcpy(bufMsg,mysql_error(&mysql));
           return -1;
       }
       MYSQL_RES* result = mysql_store_result(mySqlConnection);
       if(result == NULL){
           memset(bufMsg,0,sizeof(bufMsg));
           strcpy(bufMsg,mysql_error(&mysql));
           return -1;
       }
       int rowcount = mysql_affected_rows(mySqlConnection);
       int fieldcount = mysql_field_count(mySqlConnection);
       *model = new QStandardItemModel(rowcount,fieldcount);

       MYSQL_FIELD* field;
       int i = 0;
       int j = 0;
       for(j = 0 ; j < fieldcount; j++){
           field = mysql_fetch_field(result);
           (*model)->setHeaderData(j,Qt::Horizontal,field->name);
       }

       for(i = 0 ; i < rowcount;i++){
           MYSQL_ROW row = mysql_fetch_row(result);
           for(j = 0;j < fieldcount;j++){
               (*model)->setData((*model)->index(i, j, QModelIndex()),row[j]);
           }
       }

       mysql_free_result(result);
       return 0;


    }
    return -1;
}



const char* OwnMysql::getError(){
    return bufMsg;
}





  到这基本简单开发就学完了,代码下载地址当做参考代码下载

http://download.csdn.net/download/szqsdq/9454168






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值