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