jianbin.chang常健彬 ce734d1af1 厂家提供原始代码
2025-07-17 08:39:15 +08:00

297 lines
9.4 KiB
C++

#include "yaomin.h"
#include "ui_yaomin.h"
#include<QMessageBox>
#include<QTimer>
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 &current, 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();
}