制作简单的学生管理软件,需要用到一个登录界面和连接数据库的相关知识,正好作为学习Qt的一个联系小题目。一些很基础的操作我就不再细说了
界面1:
学生登录界面,需要用到的有label,用来显示文本信息“用户名”和“密码”以及图标。
1、用户名和密码的显示是靠拖拽控件label到界面上,并双击直接进行文字编写来实现的
2、输入用户名和密码的控件是lineEdit
3、登录按键是靠拖拽控件pushbutton到界面上,并双击直接进行文字编写来实现的
实现登录功能:
void Widget::on_buttonLogin_clicked()
{
//发送用户名和密码到服务器,然后在槽函数中去跳转
//在这里直接跳转
if(ui->lineEdit->text().trimmed() == tr("211")
&&ui->lineEdit_2->text() == tr("211"))
{
connect_mysql();
Dialog *dia = new Dialog(this);
dia->show();//展示第二个界面
this->hide();//隐藏第一个界面r
} else {
QMessageBox::warning(this, tr("警告!"),tr("用户名或密码错误!"),
QMessageBox::Yes);
// 清空内容并定位光标
ui->lineEdit->clear();
ui->lineEdit_2->clear();
ui->lineEdit->setFocus();
}
}
4、图标显示是label控件添加资源显示的。
界面2:
展示及操作界面,需要tableView控件来展示数据表,并需要按键时间增删改查功能。
void Widget::connect_mysql()
{
//打印Qt支持的数据库驱动
qDebug() << QSqlDatabase::drivers();
//添加数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//设置数据库
db.setDatabaseName("../info.db");//info.db是数据库名称
//打开数据库
if(!db.open())
{
qDebug()<<"不能连接"<<"connect to mysql error"<<db.lastError().text();
return ;
}
else
{
qDebug()<<"连接成功"<<"connect to mysql OK";
}
}
把这个函数放在登录按键下调用,可以实现登录成功的同时连接好数据库
注意dialog.h文件中需要添加的头文件和内容
#ifndef DIALOG_H
#define DIALOG_H
#include
#include
#include
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
void setmodel();
private slots:
void on_buttonAdd_clicked();
void on_buttonDel_clicked();
void on_buttonSure_clicked();
void on_buttonBack_clicked();
void on_buttonFind_clicked();
private:
Ui::Dialog *ui;
QSqlTableModel *model;
};
#endif // DIALOG_H
构建模型去控件中显示数据表,记得调用!
void Dialog::setmodel()
{
model = new QSqlTableModel(this);
model->setTable("student");
//把model放在view里
ui->tableView->setModel(model);
//显示model的数据
model->select();
//model->setHeaderData(0,Qt::Horizontal,"序号");
model->setHeaderData(0,Qt::Horizontal,"姓名");
model->setHeaderData(1,Qt::Horizontal,"学号");
model->setHeaderData(2,Qt::Horizontal,"导师");
model->setHeaderData(3,Qt::Horizontal,"专业");
model->setHeaderData(4,Qt::Horizontal,"入学时间");
//设置model的编辑模式,手动提交修改
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
//设置数据库的内容不许修改
//ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
}
相关头文件:
#include "dialog.h"
#include "ui_dialog.h"
#include "QMessageBox"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma execution_character_set("utf-8")//设置中文= =
上面的最后一行设置中文,是如果你的中文出现乱码的时候才去添加的,如果没有乱码也可以不用
1、直接操作增加一行内容
void Dialog::on_buttonAdd_clicked()
{
//添加空记录
QSqlRecord record = model->record();//获取空记录
//获取行号
int row = model->rowCount();
model->insertRecord(row,record);
}
2、删除一行或多行内容
void Dialog::on_buttonDel_clicked()
{
//获取选中的模型
QItemSelectionModel *select = ui->tableView->selectionModel();
//取出选择的索引
QModelIndexList list = select->selectedRows();
//删除所有选择的行
for(int i=0;i<list.size();i++)
{
model->removeRow(list.at(i).row());
}
}
3、进行完增加或者删除操作之后,要点确定来保存操作
void Dialog::on_buttonSure_clicked()
{
model->submitAll();//提交
}
4、依照姓名去实现查询功能
void Dialog::on_buttonFind_clicked()
{
QString name = ui->lineEdit->text();
QString str = QString("name='%1'").arg(name);
model->setFilter(str);
model->select();
}