202 lines
5.8 KiB
C++
202 lines
5.8 KiB
C++
#include "recordxijun.h"
|
|
#include "ui_recordxijun.h"
|
|
#include <QFileDialog>
|
|
recordxijun::recordxijun(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::recordxijun)
|
|
{
|
|
ui->setupUi(this);
|
|
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
|
|
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
ui->tableView->setAlternatingRowColors(true);
|
|
|
|
model = new QSqlTableModel(this);
|
|
model->setTable("xijun");//打开数据库中名为“”的表
|
|
model->select();
|
|
ui->tableView->setModel(model);
|
|
ui->tableView->show();
|
|
theSelection=new QItemSelectionModel(model);//关联选择模型
|
|
//theSelection当前项变化时触发currentChanged信号
|
|
connect(theSelection,SIGNAL(currentChanged(QModelIndex,QModelIndex)),
|
|
this,SLOT(on_currentChanged(QModelIndex,QModelIndex)));
|
|
|
|
|
|
|
|
ui->tableView->setSelectionModel(theSelection); //设置选择模型
|
|
|
|
|
|
|
|
shuaxin();
|
|
//创建界面组件与数据模型的字段之间的数据映射
|
|
dataMapper= new QDataWidgetMapper();
|
|
dataMapper->setModel(model);//设置数据模型
|
|
dataMapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
|
|
|
|
m_maxtu=new maxtu;
|
|
connect(this, SIGNAL(yuan(QPixmap)),m_maxtu, SLOT(getyuan(QPixmap)));
|
|
|
|
ui->pushButton->setFixedSize(150,50);
|
|
ui->pushButton_2->setFixedSize(150,50);
|
|
|
|
ui->pushButton_4->setFixedSize(150,50);
|
|
ui->pushButton_5->setFixedSize(150,50);
|
|
|
|
|
|
ui->lineEdit->setFixedSize(300,50);
|
|
ui->lineEdit_2->setFixedSize(300,50);
|
|
}
|
|
|
|
recordxijun::~recordxijun()
|
|
{
|
|
delete ui;
|
|
}
|
|
//刷新字段
|
|
void recordxijun::shuaxin()
|
|
{
|
|
|
|
|
|
model->setHeaderData(0,Qt::Horizontal,"用户");
|
|
model->setHeaderData(1,Qt::Horizontal,"时间");
|
|
model->setHeaderData(3,Qt::Horizontal,"原始照片");
|
|
model->setHeaderData(2,Qt::Horizontal,"结果照片");
|
|
model->setHeaderData(4,Qt::Horizontal,"计数");
|
|
for (int i=0;i<=model->rowCount() ;i++ ) {
|
|
ui->tableView->setRowHeight(i,80);
|
|
|
|
}
|
|
|
|
for (int i=0;i<=model->columnCount() ;i++ ) {
|
|
ui->tableView->setColumnWidth(i,350);
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void recordxijun::on_pushButton_clicked()
|
|
{
|
|
QString number=ui->lineEdit_2->text();
|
|
QSqlQuery query;
|
|
QString str=QString("SELECT * FROM xijun WHERE time like '%%1%'").arg(number);
|
|
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(3,Qt::Horizontal,"原始照片");
|
|
model->setHeaderData(2,Qt::Horizontal,"结果照片");
|
|
model->setHeaderData(4,Qt::Horizontal,"计数");
|
|
|
|
|
|
} else {
|
|
|
|
qDebug() << "Query failed:" << query.lastError().text();
|
|
}
|
|
}
|
|
//导出
|
|
void recordxijun::on_pushButton_2_clicked()
|
|
{
|
|
QAbstractItemModel *model = ui->tableView->model();
|
|
if (!model) {
|
|
qDebug() << "No model set on the table view.";
|
|
return;
|
|
}
|
|
QString filePath = QFileDialog::getSaveFileName(this, "Export to CSV", "", "CSV Files (*.csv)");
|
|
qDebug()<<filePath;
|
|
|
|
QFile file(filePath);
|
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
|
|
qDebug() << "Could not open file for writing:" << file.errorString();
|
|
return;
|
|
}
|
|
|
|
QTextStream out(&file);
|
|
|
|
// 写入表头(可选)
|
|
int columnCount = model->columnCount();
|
|
for (int col = 0; col < columnCount; ++col) {
|
|
out << model->headerData(col, Qt::Horizontal, Qt::DisplayRole).toString();
|
|
if (col < columnCount - 1) {
|
|
out << ",";
|
|
}
|
|
}
|
|
out << "\n";
|
|
|
|
// 写入数据行
|
|
int rowCount = model->rowCount();
|
|
for (int row = 0; row < rowCount; ++row) {
|
|
for (int col = 0; col < columnCount; ++col) {
|
|
QVariant data = model->data(model->index(row, col), Qt::DisplayRole);
|
|
out << data.toString().replace(",", ";"); // 替换逗号以避免CSV格式问题
|
|
if (col < columnCount - 1) {
|
|
out << ",";
|
|
}
|
|
}
|
|
out << "\n";
|
|
}
|
|
|
|
file.close();
|
|
qDebug() << "Data exported to CSV successfully.";
|
|
}
|
|
//刷新
|
|
void recordxijun::on_pushButton_4_clicked()
|
|
{
|
|
model->setTable("xijun");//打开数据库中名为“”的表
|
|
model->select();
|
|
ui->tableView->setModel(model);
|
|
ui->tableView->show();
|
|
shuaxin();
|
|
|
|
}
|
|
|
|
void recordxijun::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()==2){
|
|
|
|
QByteArray data=curRec.value("yuanshi").toByteArray();
|
|
QPixmap pic;
|
|
pic.loadFromData(data);
|
|
emit yuan(pic);
|
|
m_maxtu->setWindowModality(Qt::ApplicationModal);
|
|
m_maxtu->show();
|
|
}
|
|
if(current.column()==3){
|
|
QByteArray data2=curRec.value("jieguo").toByteArray();
|
|
QPixmap pic2;
|
|
pic2.loadFromData(data2);
|
|
emit yuan(pic2);
|
|
m_maxtu->setWindowModality(Qt::ApplicationModal);
|
|
m_maxtu->show();
|
|
}
|
|
|
|
|
|
|
|
}
|
|
//删除
|
|
void recordxijun::on_pushButton_5_clicked()
|
|
{
|
|
model->removeRow(ui->tableView->currentIndex().row());
|
|
model->submitAll();
|
|
model->setTable("xijun");//打开数据库中名为“”的表
|
|
model->select();
|
|
ui->tableView->setModel(model);
|
|
ui->tableView->show();
|
|
shuaxin();
|
|
|
|
}
|
|
|
|
void recordxijun::on_pushButton_6_clicked()
|
|
{
|
|
emit fanhui();
|
|
}
|