#include "yaomin.h" #include "ui_yaomin.h" #include #include yaomin::yaomin(QWidget *parent) : QWidget(parent), ui(new Ui::yaomin) { ui->setupUi(this); m_addyaomin=new addyaomin; model = new QSqlTableModel(this); shuaxin(); connect(m_addyaomin,&addyaomin::xinzeng,this,[=](){shuaxin();}); ui->tableView->setShowGrid(false); ui-> tableView->verticalHeader()->setVisible(false); ui->lineEdit_5->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->comboBox_2->setFixedSize(201,37); ui->pushButton_2->setFixedSize(76,37); ui->pushButton_3->setFixedSize(76,37); ui->pushButton_4->setFixedSize(76,37); // ui->pushButton_5->setFixedSize(76,37); // ui->pushButton_6->setFixedSize(76,37); theSelection=new QItemSelectionModel(model);//关联选择模型 //theSelection当前项变化时触发currentChanged信号 connect(theSelection,SIGNAL(currentChanged(QModelIndex,QModelIndex)), this,SLOT(on_currentChanged(QModelIndex,QModelIndex))); ui->tableView->setSelectionModel(theSelection); //设置选择模型 //创建界面组件与数据模型的字段之间的数据映射 dataMapper= new QDataWidgetMapper(); dataMapper->setModel(model);//设置数据模型 dataMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit); m_maxtu=new maxtu; connect(this, SIGNAL(yuan(QPixmap)),m_maxtu, SLOT(getyuan(QPixmap))); connect(delegate2, &ButtonDelegate2::deleteButtonClicked, this, &yaomin::shanchu); ui->tableView->setItemDelegateForColumn(4, &delegate); ui->tableView->setItemDelegateForColumn(7, delegate2); connect(ui->tableView, &QTableView::clicked, this, &yaomin::onCellClicked); ui->tableView->setShowGrid(false); ui->tableView->setFixedWidth(1843); ui->tableView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); for (int i=1;i<=8 ;i++ ) { ui->tableView->setColumnWidth(i,256); } ui->tableView->setColumnWidth(0,50); CenteredItemDelegate3* delegate = new CenteredItemDelegate3(); ui->tableView->setItemDelegate(delegate); ui->tableView->horizontalHeader()->setFixedHeight(40); connect(m_maxtu,&maxtu::guanmeng,this,[=](){mask_window.close();}); 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))); } yaomin::~yaomin() { delete ui; } void yaomin::getkaishi(QString str) { ui->lineEdit_5->setText(str); } void yaomin::getkaishii(QString str) { ui->lineEdit_4->setText(str); } void yaomin::onCellClicked(const QModelIndex &index) { if (index.column() == 4) { int curRecNo = index.row(); QSqlRecord curRec = model->record(curRecNo); QByteArray data = curRec.value("tu").toByteArray(); QPixmap pic; pic.loadFromData(data); emit yuan(pic); mask_window.setWindowOpacity(0.2); //设置窗体的背景色,这里的百分比就是透明度 mask_window.setStyleSheet("background-color: black;"); mask_window.setGeometry(0, 0, 1920,1080); //获取父窗体的几何形状设置当前窗口 mask_window.setWindowFlags(Qt::FramelessWindowHint); // 隐藏标题栏 //对话框 mask_window.show(); m_maxtu->setWindowModality(Qt::ApplicationModal); m_maxtu->show(); // QTimer::singleShot(100,this,[=](){ emit yuan(pic);}); } } void yaomin::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 yaomin::on_pushButton_2_clicked() { QString number1 = ui->comboBox->currentText(); QString number2 = ui->comboBox_2->currentText(); QString startTime = ui->lineEdit_5->text(); // 开始时间 QString endTime = ui->lineEdit_4->text(); // 结束时间 QSqlQuery query; QString str; if (ui->lineEdit_5->text() == "" || ui->lineEdit_4->text() == "") { // 如果时间输入框为空,执行原来的查询逻辑 str = QString("SELECT * FROM yaominban WHERE name LIKE '%1%' AND id LIKE '%2%'") .arg(number1) .arg(number2); } else { // 如果时间输入框不为空,增加时间段内的检索条件 str = QString("SELECT * FROM yaominban WHERE name LIKE '%1%' AND id LIKE '%2%' AND time BETWEEN '%3' AND '%4'") .arg(number1) .arg(number2) .arg(startTime) .arg(endTime); } qDebug() << str; // 输出生成的 SQL 语句,方便调试 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, "创建时间"); model->setHeaderData(6, Qt::Horizontal, "创建人员"); model->setHeaderData(7, Qt::Horizontal, "操作"); } else { qDebug() << "Query failed:" << query.lastError().text(); } } void yaomin::shuaxin() { mask_window.close(); model->setTable("yaominban");//打开数据库中名为“”的表 ui->tableView->setModel(model); model->select(); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectItems); ui->tableView->setSelectionMode(QAbstractItemView::MultiSelection); 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,"创建时间"); model->setHeaderData(6,Qt::Horizontal,"创建人员"); model->setHeaderData(7,Qt::Horizontal,"操作"); for (int i=0;i<=model->rowCount() ;i++ ) { ui->tableView->setRowHeight(i,50); } for (int i=1;i<=8 ;i++ ) { ui->tableView->setColumnWidth(i,256); } ui->tableView->setColumnWidth(0,50); ui->tableView->show(); } //重置 void yaomin::on_pushButton_3_clicked() { model->submitAll(); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); shuaxin(); } //新增 void yaomin::on_pushButton_4_clicked() { mask_window.setWindowOpacity(0.2); //设置窗体的背景色,这里的百分比就是透明度 mask_window.setStyleSheet("background-color: black;"); mask_window.setGeometry(0, 0, 1920,1080); //获取父窗体的几何形状设置当前窗口 mask_window.setWindowFlags(Qt::FramelessWindowHint); // 隐藏标题栏 //对话框 mask_window.show(); m_addyaomin->setWindowModality(Qt::ApplicationModal); m_addyaomin->move(700,350); m_addyaomin->show(); } void yaomin::on_currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { // Q_UNUSED(previous); // dataMapper->setCurrentIndex(current.row()); //更细数据映射的行号 // int curRecNo=current.row();//获取行号 // QSqlRecord curRec=model->record(curRecNo); //获取当前记录 // if(current.column()==4){ // QByteArray data=curRec.value("tu").toByteArray(); // QPixmap pic; // pic.loadFromData(data); // emit yuan(pic); // m_maxtu->setWindowModality(Qt::ApplicationModal); // m_maxtu->show(); // } } void yaomin::getshui() { ui->comboBox->clear(); QString queryString = QString("SELECT name FROM yaominban"); QSqlQuery mquery; if (!mquery.exec(queryString)) { } while (mquery.next()) { QVariant value = mquery.value(0); // 假设要获取的列是查询结果的第一列 ui->comboBox->addItem(value.toString()); } ui->comboBox_2->clear(); QString queryString2 = QString("SELECT id FROM yaominban"); QSqlQuery mquery2; if (!mquery2.exec(queryString2)) { } while (mquery2.next()) { QVariant value = mquery2.value(0); // 假设要获取的列是查询结果的第一列 ui->comboBox_2->addItem(value.toString()); } } void yaomin::on_pushButton_5_clicked() { m_date->move(660,230); m_date->exec(); } void yaomin::on_pushButton_6_clicked() { m_datee->move(880,230); m_datee->exec(); }