dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlQuery> // 操作类
#include <QSqlError> // 错误信息类
#include <QMessageBox>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
void connect2Db(); // 连接到数据库
QSqlDatabase db; // 数据库连接对象
private slots:
void btnClickedSlot();
void selectDate();
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
connect(ui->lineEdit,SIGNAL(textChanged(QString)),this,SLOT(selectDate()));
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(btnClickedSlot()));
connect2Db();
}
Dialog::~Dialog()
{
if(db.isOpen()) // 如果数据库连接打开
db.close(); // 则关闭连接
delete ui;
}
void Dialog::connect2Db()
{
// 获得数据库连接对象
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("englishwords.db");
// 打开数据库连接
if(db.open())
{
qDebug() << "数据库连接成功!";
}else
{
// 获得错误信息对象
QSqlError info = db.lastError();
// 获得错误信息文本
QString text = info.text();
// 展示
QMessageBox::critical(this,"错误",text);
}
}
void Dialog::selectDate()
{
QString world=ui->lineEdit->text();
QString sql = "SELECT * FROM englishwords WHERE word LIKE ?";
QSqlQuery sq;
sq.prepare(sql);
sq.addBindValue(world.append("%")); // 前后加通配符
if(sq.exec())
{
// 清空上次显示
ui->textBrowser->clear();
int i=0;
while(sq.next()) // 向后移动
{
i++;
QString word = sq.value("word").toString();
QString pronunciation =sq.value("pronunciation").toString();
QString meaning=sq.value("meaning").toString();
QString space = " ";
QString record = word + space + pronunciation + space + meaning;
// 展示
ui->textBrowser->append(record);
if(i==13)
{
break;
}
}
}else
{
// 获得错误信息对象
QSqlError info = sq.lastError();
// 获得错误信息文本
QString text = info.text();
QMessageBox::warning(this,"通知",text);
}
}
void Dialog::btnClickedSlot()
{
selectDate();
QString world=ui->lineEdit->text();
if(world == "")
{
QMessageBox::warning(this,"提示","请输入单词");
return;
ui->textBrowser->clear();
}
}