qt creator 链接数据库mysql 的demo 环境:ubuntu 10.10 qt creator mysql5 qt4 以及相关的lib(这个问题困扰了不少家伙,我想如果用ubnuntu,这个问题应该不大) 本文假设你已经配置好了的情况下; 用向导建立一个 基于对话框的qt gui application dialog 界
qt creator 链接数据库mysql 的demo
环境:ubuntu 10.10 qt creator mysql5 qt4 以及相关的lib(这个问题困扰了不少家伙,我想如果用ubnuntu,这个问题应该不大)
本文假设你已经配置好了的情况下;
用向导建立一个 基于对话框的qt gui application
dialog 界面设计包括:
一个textedit(qtextedit),用来显示信息,两个button(qpushbutton),一个叫做 connect,一个叫做 close。
下面是头文件dialog.h
#ifndef dialog_h
#define dialog_h
#include
#include qtsql
#include qsqldatabase
namespace ui {
class dialog;
}
class dialog : public qdialog
{
q_object
public:
explicit dialog(qwidget *parent = 0);
~dialog();
private:
ui::dialog *ui;
qsqldatabase db ; //数据库链接
private slots:
void on_close_clicked();
void on_connect_clicked();
};
#endif // dialog_h
下面是dialog.cpp
#include dialog.h
#include ui_dialog.h
#include qtsql
#include qstring
dialog::dialog(qwidget *parent) :
qdialog(parent),
ui(new ui::dialog)
{
ui->setupui(this);
this->db= qsqldatabase::adddatabase(qmysql); //设置类型为qmysql 或者其它
db.setdatabasename(sgm);
db.sethostname(127.0.0.1);
db.setusername(root);
db.setpassword(123);
ui->textedit->setenabled(false);
}
dialog::~dialog()
{
delete ui;
}
void dialog::on_connect_clicked()
{
bool success = db.open() ;
qstring string ;
if(success)
{
string =qobject::tr(链接成功/t);
}
else
{
string =qobject::tr(失败/n);
}
ui->textedit->settext(string);
}
void dialog::on_close_clicked()
{
db.close();
qstring string ;
string = qobject::tr(已经关闭/n);
ui->textedit->settext(string);
}
下面是main.cpp
#include
#include dialog.h
int main(int argc, char *argv[])
{
//设置编码格式,解决qt 中文乱码
qtextcodec::setcodecfortr(qtextcodec::codecforname(utf-8));
qtextcodec::setcodecforcstrings(qtextcodec::codecforname(utf-8));
qtextcodec::setcodecforcstrings(qtextcodec::codecforname(utf-8));
qapplication a(argc, argv);
dialog w;
w.show();
return a.exec();
}
下面附上 pro文件:
#-------------------------------------------------
#
# project created by qtcreator 2010-11-30t17:03:34
#
#-------------------------------------------------
qt += core gui sql
target = connect
template = app
sources += main.cpp/
dialog.cpp
headers += dialog.h
forms += dialog.ui
注意qt一行要加上 sql
当然我愿意不厌其烦的把最后一个dialog.ui文件贴出来,这样你所需要做的就只是拷贝了(不过要是你自己写,我会很欣慰):
我做demo一定要足够简单,所以上面仅仅显示了链接成功字样。
附上dialog.ui:
dialog
0
0
400
300
dialog
40
200
98
27
connect
200
200
98
27
close
60
40
211
121
自己写完有个疑问:
事件一般都要有个connect吧,可是为什么这里没有connect呢?