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

319 lines
9.9 KiB
C++

#include "shu.h"
#include "ui_shu.h"
#include<QSet>
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<QString>()) {
// 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()<<row;
// }
// }
// shuaxin();
// }
//新增
void shu::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_addshu->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();
}