您的位置:首页 > 编程语言 > Qt开发

C++之Qt编程初级

2016-03-06 23:20 381 查看
好久没有时间更新博客了,主要学习了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: