#include "shu.h" #include "ui_shu.h" #include shu::shu(QWidget *parent) : QWidget(parent), ui(new Ui::shu) { ui->setupUi(this); m_addshu=new addshu; model = new QSqlTableModel(this); shuaxin(); connect(m_addshu,&addshu::xinzeng,this,[=](){shuaxin();}); ui->lineEdit_3->setFixedSize(157,25); ui->lineEdit_4->setFixedSize(157,25); ui->frame->setFixedSize(201,37); ui->frame_2->setFixedSize(201,37); ui->comboBox->setFixedSize(201,37); ui->pushButton_2->setFixedSize(73,37); ui->pushButton_3->setFixedSize(73,37); ui->pushButton_4->setFixedSize(73,37); // ui->pushButton_5->setFixedSize(73,37); // ui->pushButton_6->setFixedSize(73,37); ui->tableView->setShowGrid(false); ui-> tableView->verticalHeader()->setVisible(false); ui->tableView->setItemDelegateForColumn(5, delegate); // connect(delegate, &ButtonDelegate1::editButtonClicked, this, &zhong::bianji); connect(delegate, &ButtonDelegate3::deleteButtonClicked, this, &shu::shanchu); ui->tableView->setShowGrid(false); ui-> tableView->verticalHeader()->setVisible(false); ui->tableView->setFixedWidth(1843); ui->tableView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); CenteredItemDelegate6* delegate = new CenteredItemDelegate6(); ui->tableView->setItemDelegate(delegate); ui->tableView->horizontalHeader()->setFixedHeight(40); for (int i=1;i<=5 ;i++ ) { ui->tableView->setColumnWidth(i,358); } ui->tableView->setColumnWidth(0,50); getshui(); m_date=new date; connect(m_date,SIGNAL(kaishi(QString)), this, SLOT(getkaishi(QString))); m_datee=new datee; connect(m_datee,SIGNAL(kaishi(QString)), this, SLOT(getkaishii(QString))); } shu::~shu() { delete ui; } void shu::getkaishi(QString str) { ui->lineEdit_4->setText(str); } void shu::getkaishii(QString str) { ui->lineEdit_3->setText(str); } void shu::getshui() { ui->comboBox->clear(); QString queryString = QString("SELECT name FROM junshu"); QSqlQuery mquery; if (!mquery.exec(queryString)) { } while (mquery.next()) { QVariant value = mquery.value(0); // 假设要获取的列是查询结果的第一列 ui->comboBox->addItem(value.toString()); } } void shu::shanchu(const QModelIndex& index) { int result = QMessageBox::information(NULL, "提示", "确定要删除本行内容吗", QMessageBox::Ok | QMessageBox::Cancel); if (result == QMessageBox::Ok) { qDebug() << "删除按钮被点击,行: " << index.row() << " 列: " << index.column(); if (model->removeRow(index.row())) { if (model->submitAll()) { shuaxin(); // 重置视图,强制刷新界面显示 } else { } } else { } } } void shu::on_pushButton_clicked() { // emit xitong(); } //查询 void shu::on_pushButton_2_clicked() { if(ui->lineEdit_3->text()==""||ui->lineEdit_4->text()=="") { QString number2=ui->comboBox->currentText(); QString number3=ui->lineEdit_3->text(); QSqlQuery query; QString str=QString("SELECT * FROM junshu WHERE name = '%1%' AND time LIKE '%2%'") .arg(number2) .arg(number3); qDebug() << str; query.prepare(str); if (query.exec()) { // 确保查询执行成功 QSqlQueryModel *model = new QSqlQueryModel; model->setQuery(query); // 先设置查询,这样模型就会包含查询结果 ui->tableView->setModel(model); ui->tableView->show(); 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->setHeaderData(5,Qt::Horizontal,"操作"); } else { qDebug() << "Query failed:" << query.lastError().text(); } } else{ if(ui->lineEdit_3->text()=="" || ui->lineEdit_4->text()=="") { QString number2 = ui->comboBox->currentText(); QString number3 = ui->lineEdit_3->text(); QSqlQuery query; QString str = QString("SELECT * FROM junshu WHERE name LIKE '%1%' AND time LIKE '%2%'") .arg(number2) .arg(number3); qDebug() << str; query.prepare(str); if (query.exec()) { QSqlQueryModel *model = new QSqlQueryModel; model->setQuery(query); ui->tableView->setModel(model); ui->tableView->show(); 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->setHeaderData(5, Qt::Horizontal, "操作"); } else { qDebug() << "Query failed:" << query.lastError().text(); } } else { QString number2 = ui->comboBox->currentText(); QString startTime = ui->lineEdit_3->text(); QString endTime = ui->lineEdit_4->text(); QSqlQuery query; QString str = QString("SELECT * FROM junshu WHERE name LIKE '%1%' AND time BETWEEN '%3' AND '%2'") .arg(number2) .arg(startTime) .arg(endTime); qDebug() << str; query.prepare(str); if (query.exec()) { QSqlQueryModel *model = new QSqlQueryModel; model->setQuery(query); ui->tableView->setModel(model); ui->tableView->show(); 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->setHeaderData(5, Qt::Horizontal, "操作"); } else { qDebug() << "Query failed:" << query.lastError().text(); } } } } void shu::shuaxin() { model->setTable("junshu");//打开数据库中名为“”的表 model->select(); ui->tableView->setModel(model); // for (int row = 0; row < model->rowCount(); ++row) { // for (int col = 0; col < model->columnCount(); ++col) { // QModelIndex index = model->index(row, col); // if (model->data(index).canConvert()) { // QVariant data = model->data(index); // QStandardItem* item = new QStandardItem(data.toString()); // item->setTextAlignment(Qt::AlignCenter | Qt::AlignVCenter); // 水平和垂直方向都居中 // model->setData(index, item->data(Qt::EditRole)); // } // } // } ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectItems); ui->tableView->setAlternatingRowColors(true); 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->setHeaderData(5,Qt::Horizontal,"操作"); for (int i=0;i<=model->rowCount() ;i++ ) { ui->tableView->setRowHeight(i,40); } for (int i=1;i<=5 ;i++ ) { ui->tableView->setColumnWidth(i,358); } ui->tableView->setColumnWidth(0,50); ui->tableView->show(); mask_window.close(); } //重置 void shu::on_pushButton_3_clicked() { model->submitAll(); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); shuaxin(); } //编辑 // void shu::on_pushButton_5_clicked() // { // ui->tableView->setEditTriggers(QAbstractItemView::AllEditTriggers); // } // //删除 // void shu::on_pushButton_6_clicked() // { // // 获取选择模型 // QItemSelectionModel *selectionModel = ui->tableView->selectionModel(); // if (!selectionModel) return; // 如果没有选择模型,则直接返回 // // 获取所有选中的索引,并提取出唯一的行号 // QModelIndexList selectedIndexes = selectionModel->selectedIndexes(); // for (const QModelIndex &index : selectedIndexes) { // if (index.isValid()) { // 确保索引是有效的 // int row = index.row(); // // 获取与QTableView关联的数据模型 // QAbstractTableModel *amodel = model; // amodel->removeRows(row, 1); // 删除一行 // qDebug()<setWindowModality(Qt::ApplicationModal); m_addshu->show(); } //end void shu::on_pushButton_6_clicked() { m_datee->move(580,230); m_datee->exec(); } void shu::on_pushButton_5_clicked() { m_date->move(380,230); m_date->exec(); }