#include "c.h"//借还管理
#include "ui_c.h"
#include "a.h"
C::C(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::C)
{
ui->setupUi(this);
this->setWindowTitle("借还管理");
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); // SQLite示例
db.setDatabaseName("D:/qtfile/serve1/data.db"); // 数据库文件路径
if (!db.open()) {
qDebug() << "数据库连接失败:" << db.lastError().text();
return;
}
//创建表
QSqlQuery query;
if (!query.exec("CREATE TABLE IF NOT EXISTS equipment ("
"id INTEGER PRIMARY KEY AUTOINCREMENT,"
"name TEXT NOT NULL,"
"type TEXT NOT NULL,"
"status INTEGER DEFAULT 0,"
"lend_out_date DATE,"
"return_date DATE,"
"people TEXT NOT NULL,"
"phone TEXT NOT NULL);")) {
qDebug() << "建表错误:" << query.lastError().text();
}
//插入两条数据
QSqlQuery checkQuery("SELECT COUNT(*) FROM equipment;");
if (checkQuery.next() && checkQuery.value(0).toInt() == 0) {
QSqlQuery insertQuery;
// 第一条数据
insertQuery.prepare("INSERT INTO equipment (name, type, status, lend_out_date,return_date,people,phone) "
"VALUES (:name, :type, :status, :date_1, :date_2, :people, :phone)");
insertQuery.bindValue(":name", "光谱分析仪");
insertQuery.bindValue(":type", "实验室设备");
insertQuery.bindValue(":status", 0);
insertQuery.bindValue(":date_1", QDate(2023, 5, 10));
insertQuery.bindValue(":date_2", QDate());
insertQuery.bindValue(":people", "张洪平");
insertQuery.bindValue(":phone", "19923688556");
if (!insertQuery.exec()) {
qDebug() << "插入数据失败:" << insertQuery.lastError().text();
}
// 第二条数据
insertQuery.prepare("INSERT INTO equipment (name, type, status, lend_out_date, return_date, people, phone ) "
"VALUES (:name, :type, :status, :date_1, :date_2, :people, :phone)");
insertQuery.bindValue(":name", "离心机");
insertQuery.bindValue(":type", "生物设备");
insertQuery.bindValue(":status", 1);
insertQuery.bindValue(":date_1", QDate(2022, 11, 20));
insertQuery.bindValue(":date_2", QDate(2023, 7, 9));
insertQuery.bindValue(":people", "张洪平");
insertQuery.bindValue(":phone", "19923688556");
if (!insertQuery.exec()) {
qDebug() << "插入数据失败:" << insertQuery.lastError().text();
}
}
model = new QSqlTableModel(this);
model->setTable("equipment"); // 设置数据库表名
model->setEditStrategy(QSqlTableModel::OnManualSubmit); // 手动提交修改
model->setSort(model->fieldIndex("ID"),Qt::AscendingOrder);//按id排序
model->select();//加载数据
// 设置列标题
model->setHeaderData(0, Qt::Horizontal, tr("ID"));
model->setHeaderData(1, Qt::Horizontal, tr("设备名称"));
model->setHeaderData(2, Qt::Horizontal, tr("设备类型"));
model->setHeaderData(3, Qt::Horizontal, tr("借还状态"));
model->setHeaderData(4, Qt::Horizontal, tr("借出日期"));
model->setHeaderData(5,Qt::Horizontal, tr("归还日期"));
model->setHeaderData(6, Qt::Horizontal, tr("借用人"));
model->setHeaderData(7,Qt::Horizontal, tr("手机"));
// 加载数据
if (!model->select()) {
qDebug() << "数据加载失败:" << model->lastError().text();
}
ui->tableView->setModel(model);//绑定模型
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
ui->tableView->setModel(model);
ui->tableView->resizeColumnsToContents(); // 自动调整列宽
ui->tableView->show();
}
C::~C()
{
delete ui;
}
void C::on_pushButton_clicked()//返回按钮
{
A *w=new A();
w->show();
this->hide();
}
void C::on_pushButton_2_clicked()//退出按钮
{
this->close();
}
//借出记录
void C::on_action_triggered()
{
model->setFilter("");
}
//归还记录
void C::on_action_2_triggered(){
model->setFilter("status <> 0");// 排除状态为0的记录
}
void C::on_action_3_triggered()
{
QDialog dialog(this);
dialog.setWindowTitle("添加新记录");
dialog.setMinimumWidth(300);
// 创建布局
QVBoxLayout *mainLayout = new QVBoxLayout(&dialog);
QFormLayout *formLayout = new QFormLayout();
// 创建输入控件
QLineEdit *nameEdit = new QLineEdit(&dialog);//equipment
QLineEdit *typeEdit = new QLineEdit(&dialog);
QLineEdit *lend_out_dateEdit = new QLineEdit(&dialog);
QLineEdit *peopleEdit= new QLineEdit(&dialog);
QLineEdit *phoneEdit= new QLineEdit(&dialog);
// 添加控件到表单
formLayout->addRow("设备名称:", nameEdit);
formLayout->addRow("设备类型:", typeEdit);
formLayout->addRow("借出时间:", lend_out_dateEdit);
formLayout->addRow("借用人:", peopleEdit);
formLayout->addRow("手机·:", phoneEdit);
// 创建按钮
QDialogButtonBox *buttonBox = new QDialogButtonBox(
QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
Qt::Horizontal, &dialog);
mainLayout->addLayout(formLayout);
mainLayout->addWidget(buttonBox);
// 连接按钮信号
connect(buttonBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
connect(buttonBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
// 显示对话框并处理结果
if (dialog.exec() == QDialog::Accepted) {
// 获取输入值
QString name = nameEdit->text().trimmed();
QString type = typeEdit->text().trimmed();
QString date_1= lend_out_dateEdit->text().trimmed();
QString date_2= "";
QString status = "0";
QString people = peopleEdit->text().trimmed();
QString phone = phoneEdit->text().trimmed();
// 验证输入
if (name.isEmpty()) {
QMessageBox::warning(this, "输入错误", "设备名不能为空");
return;
}
// 在模型末尾插入新行
int rowNum = model->rowCount();
model->insertRow(rowNum);
// 设置新记录的值
model->setData(model->index(rowNum, model->fieldIndex("ID")), rowNum+1);
model->setData(model->index(rowNum, model->fieldIndex("设备名称")), name);
model->setData(model->index(rowNum, model->fieldIndex("设备类型")), type);
model->setData(model->index(rowNum, model->fieldIndex("借还状态")), status);
model->setData(model->index(rowNum, model->fieldIndex("借用时间")), date_1);
model->setData(model->index(rowNum, model->fieldIndex("归还时间")), date_2);
model->setData(model->index(rowNum, model->fieldIndex("借用人")),people);
model->setData(model->index(rowNum, model->fieldIndex("手机")), phone);
// 自动滚动到新添加的行
ui->tableView->scrollToBottom();
}
}
为什么最终table view仅显示了ID
最新发布