C++之Qt编程初级

来源:互联网 发布:农村淘宝服务点查询 编辑:程序博客网 时间:2024/05/16 19:45

    好久没有时间更新博客了,主要学习了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






1 0
原创粉丝点击