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的创建
数据库逻辑封装类
到这基本简单开发就学完了,代码下载地址当做参考代码下载
http://download.csdn.net/download/szqsdq/9454168
小作品可以理解为基于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
相关文章推荐
- Qt乱码
- redhat6.4 64安装qt5.0.run
- Qt5::WindowFlags枚举类型
- QT 给.exe文件添加图标
- pyqt5载入qml
- pyqt4制作透明无边框窗体
- Qt遇到的问题
- 基于Qt4.7的ADC测试程序
- Qt之HTTP上传/下载
- Qt之HTTP上传/下载
- Qt5.3.2_CentOS6.4_基本编程环境__20160306
- Qt QTreeWidget 固定第一列
- QT5 应用1
- 一起看代码来玩玩QT之18 database(five 用lineEidt 对database 进行高级别的查询,使QTableView显示所需的数据)
- 一起看代码来玩玩QT之18 database(four 向QtableView 添加代理view->setItemDelegate ,让代理作一些东西)
- PyQt5 - QWidgets部件进阶教程之数字时钟
- Qt Mac 下软件Release 公布dmg
- Qt的tr()函数
- QT中QWidget、QDialog及QMainWindow的区别
- Qt中的setShortcut()函数