database.h
#include<QtSql/QSqlDatabase>#include<QtSql/QSqlQuery>#include<widget.h>#include<ui_widget.h>static bool createConnection(){ QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("database.db"); if(!db.open()) return false; return true;}#endif // DATABASE_H
main.cpp
#include <QtGui/QApplication>#include "widget.h"#include<database.h>#include<QTextCodec>int main(int argc, char *argv[]){ QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); if(!createConnection()) return 1; Widget w; w.show(); return a.exec();}widget.cpp
void Widget::on_pushButton_clicked(){ if(ui->lineEdit->text().trimmed()==""||ui->lineEdit_2->text().trimmed()=="") { QMessageBox::warning(this,"warning","information is not completed!"); return; } else { m_id=ui->lineEdit->text().trimmed(); m_name=ui->lineEdit_2->text().trimmed(); QSqlQuery query; //query.exec("create table student(id,name)"); query.prepare("insert into student values(?,?)"); query.addBindValue(m_id); query.addBindValue(m_name); query.exec(); QSqlQueryModel*model=new QSqlQueryModel; model->setQuery("select*from student"); model->setHeaderData(0,Qt::Horizontal,tr("id")); model->setHeaderData(1,Qt::Horizontal,tr("name")); QTableView*view=new QTableView; view->setModel(model); view->show(); }}这样运行以后tableview可以显示插入变量,但是为什么如果把main.cpp里面的if(!createConnection) return 1; 删除以后,再运行,tableview显示的是空白?不知道这是为什么?和createConnection()这个函数有关系吗?这条语句的作用是什么?