#include "charge.h"
#include "ui_charge.h"
#include<QMenuBar>
#include <QMainWindow>
#include<QWidget>
#include <QPrintDialog>
#include <QPrinter>
#include <QPainter>
#include <QStackedWidget>
#include <QSqlQuery>
#include<QMessageBox>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QVariantList>
#include <QSqlTableModel>
#include<QDebug>
#include <QFile>
#include <QPdfWriter>
#include <QFileDialog>
#include <QSqlRecord>
#include<QProcess>
#include<iostream>
#include <fstream>
#include <windows.h>
#include<QInputDialog>
#include <QFileDevice>
Charge::Charge(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Charge)
{
ui->setupUi(this);
QFile file("C:/Users/14771/Documents/A-0/main.qss");
file.open(QFile::ReadOnly);
QTextStream filetext(&file);
QString stylesheet = filetext.readAll();
this->setStyleSheet(stylesheet);
file.close();
connect(ui->actionNew,&QAction::triggered,[=] (){
});
//连接数据库
primkey = 1;
createConnection();
//下拉选项框可编辑
ui->comboBox->setEditable(true);
ui->comboBox_pay->setEditable(true);
ui->comboBox_classSum->setEditable(true);
ui->comboBox_students->setEditable(true);
ui->comboBox_receiver1->setEditable(true);;
ui->comboBox_receiver2->setEditable(true);
ui->comboBox_className_1->setEditable(true);
ui->comboBox_className_2->setEditable(true);;
ui->comboBox_className_3->setEditable(true);
ui->comboBox_className_4->setEditable(true);
ui->comboBox_className_7->setEditable(true);
ui->comboBox_className_8->setEditable(true);
ui->comboBox_className_9->setEditable(true);
ui->comboBox_className_12->setEditable(true);
ui->comboBox_className_14->setEditable(true);
ui->comboBox_className_15->setEditable(true);
//在tableview中创建一个model
model = new QSqlTableModel(ui->tableView_search);
ui->tableView_search->setModel(model);//绑定
model->setTable("user_information");
//添加列
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,"金额");
model->setHeaderData(8,Qt::Horizontal,"收款单位");
model->setHeaderData(9,Qt::Horizontal,"付款方式");
model->setHeaderData(10,Qt::Horizontal,"收款人");
model->setHeaderData(11,Qt::Horizontal,"课程总数");
model->setHeaderData(12,Qt::Horizontal,"次序");
model->select();
//设置表格的单元为只读属性,即不能编辑
// ui->tableView_search->setEditTriggers(QAbstractItemView::NoEditTriggers);
// ui->tableView_search->setSelectionBehavior(QAbstractItemView::SelectRows);//设置选中模式为选中行
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
//备份数据库
}
void Charge::createConnection(){
db = QSqlDatabase::addDatabase("QSQLITE");
//设置数据库
db.setDatabaseName("C:/sqlite/education.db");
//打开数据库
if( !db.open() ) //数据库打开失败
{
QMessageBox::warning(this, "erro", db.lastError().text());
return;
}
}
bool Charge::backupDB(){//数据库备份
QString sourceFileName = QDir::currentPath()+"/temp/ICEMS.db";
//创建备份文件夹
QDir dir(QDir::currentPath()+"/backup");
if(!dir.exists()){
dir.mkdir(QDir::currentPath()+"/backup");
}
//检查源数据库文件是否存在
bool isExist = QFile::exists(QDir::currentPath()+"/temp/ICEMS.db");
if(!isExist){
QMessageBox::about(this,QString::fromLocal8Bit("备份数据库"),
QString::fromLocal8Bit("备份失败,源数据库文件不存在!"));
return false;
}
else
{
//获取当前时间
QDateTime current_date_time = QDateTime::currentDateTime();
QString date = current_date_time.toString("yyyy-MM-dd hh-mm-ss");
//重构当前备份目录及文件名,加入时间字段
QString destFileName = QDir::currentPath()+"/backup/"+ QString("ICMES_backup%1.db").arg(date);
//info = QFileInfo(destFileName);
// destFileName = info.fileName();
//调用备份命令copy
if(QFile::copy(sourceFileName,destFileName))
{
return true ;
}
else
{
return false ;
}
}
}
void Charge::receiveLogin(){
this->show();
}
Charge::~Charge()
{
delete ui;
}
void Charge::on_settings_button_clicked()
{
emit showSettings();
}
void Charge::on_pushButton_clicked()//清空按钮cliked;
{
ui->dateTimeEdit1->clear();
ui->lineEdit_No->clear();
ui->lineEdit_name->clear();
ui->comboBox->clearEditText();
ui->lineEdit_phoneNumber->clear();
ui->comboBox_students->clearEditText();
ui->comboBox_classSum->clearEditText();
ui->comboBox_className_8->clear();
ui->lineEdit_pay1_2->clear();
ui->lineEdit_receive1_8->clear();
ui->lineEdit_sum->clear();
ui->lineEdit_sum_Big->clear();
ui->comboBox_className_9->clearEditText();
ui->lineEdit_receive1_3->clear();
ui->lineEdit_pay1_3->clear();
ui->comboBox_className_7->clearEditText();
ui->lineEdit_receive2_2->clear();
ui->lineEdit_pay2_2->clear();
ui->lineEdit_sum_3->clear();
ui->lineEdit_sum_Big_3->clear();
ui->comboBox_className_15->clearEditText();
ui->lineEdit_receive1_5->clear();
ui->lineEdit_pay1_5->clear();
ui->comboBox_className_14->clearEditText();
ui->lineEdit_receive2_4->clear();
ui->lineEdit_pay2_4->clear();
ui->comboBox_className_12->clearEditText();
ui->lineEdit_receive3_3->clear();
ui->lineEdit_pay3_3->clear();
ui->lineEdit_sum_4->clear();
ui->lineEdit_sum_Big_4->clear();
ui->comboBox_className_1->clearEditText();
ui->lineEdit_receive4->clear();
ui->lineEdit_pay1->clear();
ui->lineEdit_pay4->clear();
ui->comboBox_className_4->clearEditText();
ui->lineEdit_pay2->clear();
ui->lineEdit_receive1->clear();
ui->lineEdit_receive2->clear();
ui->comboBox_className_2->clearEditText();
ui->lineEdit_pay3->clear();
ui->comboBox_className_3->clear();
ui->lineEdit_receive3->clear();
ui->lineEdit_sum_5->clear();
ui->lineEdit_sum_Big_5->clear();
ui->comboBox_receiver1->clearEditText();
ui->comboBox_pay->clearEditText();
ui->comboBox_receiver2->clearEditText();
ui->lineEdit_signal->clear();
ui->lineEdit_name_2->clear();
ui->lineEdit_phone->clear();
ui->dateTimeEdit->clear();
ui->lineEdit_sum_Big->clear();
ui->lineEdit_sum->clear();
ui->comboBox_receiver1->clearEditText();
ui->comboBox_pay->clearEditText();
ui->comboBox_receiver2->clearEditText();
ui->lineEdit_signal->clear();
}
void Charge::receiveCharge3(){
Charge::on_pushButton_save_clicked();
}
void Charge::on_pushButton_save_clicked()
{
QString s1 =ui->dateTimeEdit1->text();//报名时间s1
QString s2 =ui->lineEdit_No->text();//票据编号2
QString s3 =ui->lineEdit_name->text();//姓名3
QString s4 =ui->comboBox->currentText();//性别4
QString s5 =ui->lineEdit_phoneNumber->text();//电话5
QString s6 =ui->comboBox_students->currentText();//学生类型6
int s7 =ui->comboBox_classSum->currentIndex();//课程数目7
QString s54 =ui->comboBox_receiver1->currentText();//收款单位54
QString s55 =ui->comboBox_pay->currentText();//收款方式55
QString s56 =ui->comboBox_receiver2->currentText();//收款人56
//page1
QString s8 =ui->comboBox_className_8->currentText();
QString s12 =ui->lineEdit_sum->text();
//page2
QString s13 =ui->comboBox_className_9->currentText();
QString s16 =ui->lineEdit_receive1_3->text();
QString s17 =ui->lineEdit_pay1_3->text();
QString s18 =ui->comboBox_className_7->currentText();
QString s20 =ui->lineEdit_receive2_2->text();
QString s21 =ui->lineEdit_pay2_2->text();
QString s22 =ui->lineEdit_sum_3->text();
//page3
QString s23 =ui->comboBox_className_15->currentText();
QString s25 =ui->lineEdit_receive1_5->text();
QString s26 =ui->lineEdit_pay1_5->text();
QString s27 =ui->comboBox_className_14->currentText();
QString s29 =ui->lineEdit_receive2_4->text();
QString s30 =ui->lineEdit_pay2_4->text();
QString s31 =ui->comboBox_className_12->currentText();
QString s33 =ui->lineEdit_receive3_3->text();
QString s34 =ui->lineEdit_pay3_3->text();
QString s35 =ui->lineEdit_sum_4->text();
//page4
QString s36 =ui->comboBox_className_1->currentText();
QString s38 =ui->lineEdit_receive1->text();
QString s39 =ui->lineEdit_pay1->text();
QString s40 =ui->comboBox_className_2->currentText();
QString s42 =ui->lineEdit_receive2->text();
QString s43 =ui->lineEdit_pay2->text();
QString s44 =ui->comboBox_className_3->currentText();
QString s46 =ui->lineEdit_receive3->text();
QString s47 =ui->dateTimeEdit1->text();
QString s48 =ui->lineEdit_pay3->text();
QString s49 =ui->comboBox_className_4->currentText();
QString s51 =ui->lineEdit_receive4->text();
QString s52 =ui->lineEdit_pay4->text();
QString s53 =ui->lineEdit_sum_5->text();
QSqlQuery sql_query;
QVariantList date,No,name,sexual,phonenumber,studenttype,classname,money,payee1,payment,payee2,classsum,prim;
QString insert_sql = "INSERT INTO user_information VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ,?)";
//没有设定prime key
s7 += 1;
if(s7 ==1){
sql_query.prepare(insert_sql);
sql_query.addBindValue(s1);
sql_query.addBindValue(s2);
sql_query.addBindValue(s3);
sql_query.addBindValue(s4);
sql_query.addBindValue(s5);
sql_query.addBindValue(s6);
sql_query.addBindValue(s8);//classname
sql_query.addBindValue(s12);//总金额
sql_query.addBindValue(s54);//收款单位
sql_query.addBindValue(s55);//收款方式
sql_query.addBindValue(s56);//收款人
sql_query.addBindValue(s7);
sql_query.addBindValue(primkey);
primkey++;
sql_query.exec();
}
else if (s7==2) {
date<<s1<<s1;
No <<s2<<s2;
name<<s3<<s3;
sexual<<s4<<s4;
phonenumber <<s5<<s5;
studenttype<<s6<<s6;
classname<<s13<<s18;
money <<s16<<s20;
payee1<<s54<<s54;
payment<<s55<<s55;
payee2 <<s56<<s56;
classsum<<s7<<s7;
prim<<primkey<<primkey+1;
sql_query.prepare(insert_sql);
sql_query.addBindValue(date);
sql_query.addBindValue(No);
sql_query.addBindValue(name);
sql_query.addBindValue(sexual);
sql_query.addBindValue(phonenumber);
sql_query.addBindValue(studenttype);
sql_query.addBindValue(classname);
sql_query.addBindValue(money);//金额
sql_query.addBindValue(payee1);
sql_query.addBindValue(payment);
sql_query.addBindValue(payee2);
sql_query.addBindValue(classsum);
sql_query.addBindValue(prim);
if(!sql_query.execBatch())
{
qDebug()<<sql_query.lastError();
}
else {
primkey += 2;
}
}
else if (s7==3) {
date<<s1<<s1<<s1;
No <<s2<<s2<<s2;
name<<s3<<s3<<s3;
sexual<<s4<<s4<<s4;
phonenumber <<s5<<s5<<s5;
studenttype<<s6<<s6<<s6;
classname<<s23<<s27<<s31;
money <<s25<<s29<<s33;
payee1<<s54<<s54<<s54;
payment<<s55<<s55<<s55;
payee2 <<s56<<s56<<s56;
classsum<<s7<<s7<<s7;
prim<<primkey<<primkey+1<<primkey+2;
sql_query.prepare(insert_sql);
sql_query.addBindValue(date);
sql_query.addBindValue(No);
sql_query.addBindValue(name);
sql_query.addBindValue(sexual);
sql_query.addBindValue(phonenumber);
sql_query.addBindValue(studenttype);
sql_query.addBindValue(classname);
sql_query.addBindValue(money);//金额
sql_query.addBindValue(payee1);
sql_query.addBindValue(payment);
sql_query.addBindValue(payee2);
sql_query.addBindValue(classsum);
sql_query.addBindValue(prim);
if(!sql_query.execBatch())
{
qDebug()<<sql_query.lastError();
}
else {
primkey += 3;
}
}
else if (s7==4) {
date<<s1<<s1<<s1<<s1;
No <<s2<<s2<<s2<<s2;
name<<s3<<s3<<s3<<s3;
sexual<<s4<<s4<<s4<<s4;
phonenumber <<s5<<s5<<s5<<s5;
studenttype<<s6<<s6<<s6<<s6;
classname<<s36<<s40<<s44<<s49;
money <<s38<<s42<<s46<<s51;
payee1<<s54<<s54<<s54<<s54;
payment<<s55<<s55<<s55<<s55;
payee2 <<s56<<s56<<s56<<s56;
classsum<<s7<<s7<<s7<<s7;
prim<<primkey<<primkey+1<<primkey+2<<primkey+3;
sql_query.prepare(insert_sql);
sql_query.addBindValue(date);
sql_query.addBindValue(No);
sql_query.addBindValue(name);
sql_query.addBindValue(sexual);
sql_query.addBindValue(phonenumber);
sql_query.addBindValue(studenttype);
sql_query.addBindValue(classname);
sql_query.addBindValue(money);//金额
sql_query.addBindValue(payee1);
sql_query.addBindValue(payment);
sql_query.addBindValue(payee2);
sql_query.addBindValue(classsum);
sql_query.addBindValue(prim);
if(!sql_query.execBatch())
{
qDebug()<<sql_query.lastError();
}
else {
primkey += 4;
}
}
else {
qDebug()<<sql_query.lastError();
}
}
const QString numToChinese(const double & Fnumber){
if(qAbs(Fnumber)<0.01) //保留2位小数时,近似看作零的情况
return "零";
QString numberSign;//存储符号
QString number = QString::number(Fnumber,'f',2);//qAbs绝对值 ,保留两位小数
QString Left_of_Point;//整数部分
int length =number.length()-3;//整数部分的长度,(精确度为2,去除小数和小数点)
if(length>12)
{
//qDebug()<<"输入的数值超过范围!"
return "输入的数值超过范围!";
}
QStringList numerical_unit = {"","拾","佰","仟","万","拾", "佰", "仟", "亿", "拾", "佰", "仟"};
QStringList numerical_value = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
//数数整数低位多少个连零
int counter_0=0;
for(int i =length-1;i>=0;i--)
{
if((number[i].toLatin1()-'0' )==0) //从个位开始,向高位走
counter_0++;
else
break;
}
if(length==1 && counter_0==1) //0.x
counter_0=0; //不进行过滤
//1400 0.2
for(int i=0,flag=1;i<length-counter_0;i++)
{
//5 8 1 2 3
//伍 拾 捌 壹佰 贰拾 叁
if((number[i].toLatin1()-'0')==0)
{
if((flag!=0 && (length-1-i)%4 != 0) || length ==1) //flag!=0 表示前一个数值 不为0
Left_of_Point+="零"; //后面不用添加 单位
if((length-1-i)%4 == 0) //如果0处于分段处,后面需添加单位
Left_of_Point+=numerical_unit[length-1-i];//添加数值单位
flag =0; //标记
}
else
{
flag =1;
Left_of_Point+=numerical_value[number[i].toLatin1()-'0']; //'5'-'0'==5
Left_of_Point+=numerical_unit[length-1-i];//添加数值单位
}
}
//QString Right_of_Point;//小数点右侧,小数部分(保留两位) xxxx.yy
int totalLength = number.length();
if(number[totalLength-2]=='0'&&number[totalLength-1]=='0')
{
QString Bigcn=numberSign+Left_of_Point+"圆";
return Bigcn;
}
else if(number[totalLength-2]!='0'&&number[totalLength-1]=='0')
{
QString Bigcn=numberSign+Left_of_Point+"点"+numerical_value[number[totalLength-2].toLatin1()-'0']+"圆";
return Bigcn;
}
else
{
QString Bigcn=numberSign+Left_of_Point+"点"+numerical_value[number[totalLength-2].toLatin1()-'0']+numerical_value[number[totalLength-1].toLatin1()-'0']+"吨";
return Bigcn;
}
// return "异常情况";
}
void Charge::on_comboBox_classSum_activated(int index)
{
index = ui->comboBox_classSum->currentIndex();//根据课程数目的不同,不同的票据内容
ui->stackedWidget->setCurrentIndex(index);//stackwidget根据下拉框的选项显示不同的界面
}
void Charge::on_pushButton_sum1_clicked()
{
QString sum;
double sumint;
sum = ui->lineEdit_receive1_8->text();
sumint = sum.toDouble();
//自动生成总金额
sum = QString::number(sumint, 10,2);
ui->lineEdit_sum->setText(sum);
//自动生成大写金额
sum =numToChinese( sumint);
ui->lineEdit_sum_Big->setText(sum);
}
void Charge::on_pushButton_sum2_clicked()
{
QString sum;
double sumint;
sum = ui->lineEdit_receive1_3->text();
sumint = sum.toDouble();
sum = ui->lineEdit_receive2_2->text();
sumint += sum.toDouble();
sum = QString::number(sumint, 10,2);
ui->lineEdit_sum_3->setText(sum);
//自动生成大写金额
sum =numToChinese( sumint);
ui->lineEdit_sum_Big_3->setText(sum);
}
void Charge::on_pushButton_sum3_clicked()
{
QString sum;
double sumint;
sum = ui->lineEdit_receive1_5->text();
sumint = sum.toDouble();
sum = ui->lineEdit_receive2_4->text();
sumint += sum.toDouble();
sum = ui->lineEdit_receive3_3->text();
sumint += sum.toDouble();
//自动生成总金额
sum = QString::number(sumint, 10,2);
ui->lineEdit_sum_4->setText(sum);
//自动生成大写金额
sum =numToChinese( sumint);
ui->lineEdit_sum_Big_4->setText(sum);
}
void Charge::on_pushButton_sum4_clicked()
{
QString sum;
double sumint;
sum = ui->lineEdit_receive1->text();
sumint = sum.toDouble();
sum = ui->lineEdit_receive2->text();
sumint += sum.toDouble();
sum = ui->lineEdit_receive3->text();
sumint += sum.toDouble();
sum = ui->lineEdit_receive4->text();
sumint += sum.toDouble();
//自动生成总金额
sum = QString::number(sumint, 10,2);
ui->lineEdit_sum_5->setText(sum);
//自动生成大写金额
sum =numToChinese( sumint);
ui->lineEdit_sum_Big_5->setText(sum);
}
void Charge::on_btnPreview_clicked()
{
emit Save();
// QDialog *printCofig = new QDialog(this);
// printCofig->setGeometry(200,300,300,150);
// printCofig->setWindowTitle("打印选项");
// QLabel * text = new QLabel(printCofig);
// text->setText("打印纸张大小");
// text->setGeometry(20,20,100,40);
// text->show();
// QComboBox * combobox = new QComboBox(printCofig);
// QStringList s ;
// s<<"A4"<<"B5";
// combobox->addItems(s);
// combobox->setGeometry(20,200,100,40);
// combobox->show();
// // 按钮
// QPushButton * pBtn = new QPushButton(printCofig);
// QRect rc(200,200,100,40);
// pBtn->setGeometry(rc); // 设置按钮位置
// pBtn->setText("确定"); // 设置按钮文字
// pBtn->show();
// printCofig->exec();
// if(combobox->currentText()=="A4") flag=1;
// else if (combobox->currentText() =="B5") flag =2;
QString fileName = QFileDialog::getSaveFileName(this, tr("保存PDF文件"), QString(), "*.pdf");
if (!fileName.isEmpty())
{
// 如果文件后缀为空,则默认使用.pdf
if (QFileInfo(fileName).suffix().isEmpty())
{
fileName.append(".pdf");
}
QPrinter printerPixmap(QPrinter::HighResolution);
if(flag==1)
printerPixmap.setPageSize(QPrinter::A4);
else if(flag ==2)
printerPixmap.setPageSize(QPrinter::B5);
//横向打印
printerPixmap.setOrientation(QPrinter::Landscape);
//设置输出格式为pdf
printerPixmap.setOutputFormat(QPrinter::PdfFormat);
//设置输出路径
printerPixmap.setOutputFileName(fileName);
QString filepath = QFileInfo(fileName).absolutePath();//获取当前路径
QString s1 =ui->dateTimeEdit1->text();//报名时间s1
QString s2 =ui->lineEdit_No->text();//票据编号2
QString s3 =ui->lineEdit_name->text();//姓名3
QString s4 =ui->comboBox->currentText();//性别4
QString s5 =ui->lineEdit_phoneNumber->text();//电话5
QString s6 =ui->comboBox_students->currentText();//学生类型6
int s7 =ui->comboBox_classSum->currentIndex();//课程数目7
QString s54 =ui->comboBox_receiver1->currentText();//收款单位54
QString s55 =ui->comboBox_pay->currentText();//收款方式55
QString s56 =ui->comboBox_receiver2->currentText();//收款人56
//page1
QString s8 =ui->comboBox_className_8->currentText();
QString s10 =ui->lineEdit_receive1_8->text();
QString s11 =ui-> lineEdit_pay1_2->text();
QString s12 =ui->lineEdit_sum->text();
QString s57 =ui->lineEdit_sum_Big->text();
//page2
QString s13 =ui->comboBox_className_9->currentText();
QString s16 =ui->lineEdit_receive1_3->text();
QString s17 =ui->lineEdit_pay1_3->text();
QString s18 =ui->comboBox_className_7->currentText();
QString s20 =ui->lineEdit_receive2_2->text();
QString s21 =ui->lineEdit_pay2_2->text();
QString s22 =ui->lineEdit_sum_3->text();
QString s58 =ui->lineEdit_sum_Big_3->text();
//page3
QString s23 =ui->comboBox_className_15->currentText();
QString s25 =ui->lineEdit_receive1_5->text();
QString s26 =ui->lineEdit_pay1_5->text();
QString s27 =ui->comboBox_className_14->currentText();
QString s29 =ui->lineEdit_receive2_4->text();
QString s30 =ui->lineEdit_pay2_4->text();
QString s31 =ui->comboBox_className_12->currentText();
QString s33 =ui->lineEdit_receive3_3->text();
QString s34 =ui->lineEdit_pay3_3->text();
QString s35 =ui->lineEdit_sum_4->text();
QString s59 =ui->lineEdit_sum_Big_4->text();
//page4
QString s36 =ui->comboBox_className_1->currentText();
QString s38 =ui->lineEdit_receive1->text();
QString s39 =ui->lineEdit_pay1->text();
QString s40 =ui->comboBox_className_2->currentText();
QString s42 =ui->lineEdit_receive2->text();
QString s43 =ui->lineEdit_pay2->text();
QString s44 =ui->comboBox_className_3->currentText();
QString s46 =ui->lineEdit_receive3->text();
QString s48 =ui->lineEdit_pay3->text();
QString s49 =ui->comboBox_className_4->currentText();
QString s51 =ui->lineEdit_receive4->text();
QString s52 =ui->lineEdit_pay4->text();
QString s53 =ui->lineEdit_sum_5->text();
QString s60 =ui->lineEdit_sum_Big_5->text();
// QString fileName = "E:/a.pdf";
QFile pdfFile(fileName);
pdfFile.open(QIODevice::WriteOnly); // 打开要写入的pdf文件
QPdfWriter* pPdfWriter = new QPdfWriter(&pdfFile); // 创建pdf写入器
pPdfWriter->setPageSize(QPagedPaintDevice::A4); // 设置纸张为A4
pPdfWriter->setResolution(300); // 设置纸张的分辨率为300,因此其像素为3508X2479
int iMargin = 60; // 页边距
pPdfWriter->setPageMargins(QMarginsF(iMargin, iMargin, iMargin, iMargin));
QPainter* pPdfPainter = new QPainter(pPdfWriter); // qt绘制工具
QTextOption option(Qt::AlignHCenter | Qt::AlignVCenter); // 标题,居中
option.setWrapMode(QTextOption::WordWrap);
// 标题上边留白
int iTop = 10;
// 文本宽度2100
int iContentWidth = 2100;
// 标题,16号字
QFont font;
font.setFamily("simhei.ttf");
int fontSize =16 ;
font.setPointSize(fontSize);
pPdfPainter->setFont(font); // 为绘制工具设置字体
pPdfPainter->drawText(QRect(0, 30, iContentWidth, 80), tr("322程序媛培训资金结算票据"), option);
fontSize =10 ;
font.setPointSize(fontSize);
pPdfPainter->setFont(font);
option.setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
iTop += 180;
pPdfPainter->drawText(QRect(300, iTop, iContentWidth, 60), tr("报名时间:"));
pPdfPainter->drawText(QRect(500, iTop, iContentWidth, 60), s1);
pPdfPainter->drawText(QRect(1300, iTop, iContentWidth, 60), "No:");
pPdfPainter->drawText(QRect(1500, iTop, iContentWidth, 60), s2);
pPdfPainter->drawRect(100,260,2000,1050);
pPdfPainter->drawLine(100,410,2100,410);
fontSize = 10;
font.setPointSize(fontSize);
pPdfPainter->setFont(font);
option.setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
iTop += 140;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("姓名:"));
pPdfPainter->drawText(QRect(300, iTop, iContentWidth, 60), s3);
pPdfPainter->drawText(QRect(500, iTop, iContentWidth, 60), tr("性别:"));
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60), s4);
pPdfPainter->drawText(QRect(800, iTop, iContentWidth, 60), tr("电话:"));
pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), s5);
pPdfPainter->drawText(QRect(1250, iTop, iContentWidth, 60), tr("学生类型:"));
pPdfPainter->drawText(QRect(1450, iTop, iContentWidth, 60), s6);
pPdfPainter->drawText(QRect(1600, iTop, iContentWidth, 60), tr("课程数目:"));
QString a;
a =QString::number(s7,10,0);//QString::number(a,基底,精度)
pPdfPainter->drawText(QRect(1810, iTop, iContentWidth, 60), a);
iTop += 120;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("课程名称"));
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60), tr("课时"));
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), tr("应收"));
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), tr("实收"));
pPdfPainter->drawText(QRect(200, 1000, iContentWidth, 60), tr("备注信息:"));
iTop += 120;
QString s9= "";
if(s7==0){
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s8);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s10);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s11);
iTop += 480;
//填入内容
}
else if(s7 == 1){
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s13);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s16);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s17);
iTop += 120;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s18);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s20);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s21);
iTop += 360;
}
else if(s7==2) {
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s23);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9);
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s25);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s26);
iTop += 120;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s27);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s29);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s30);
iTop += 120;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s31);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s33);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s34);
iTop += 240;
}
else if(s7==3) {
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s36);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s38);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s39);
iTop += 120;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s40);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9);
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s42);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s43);
iTop += 120;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s44);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s46);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s48);
iTop += 120;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), s49);
pPdfPainter->drawText(QRect(600, iTop, iContentWidth, 60),s9 );
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60),s51);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), s52);
}
iTop += 120;
pPdfPainter->drawLine(100,1120,2100,1120);
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("合计金额:"));
if(s7==0){
pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s12);
pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写:"));
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s57);
}
else if (s7 ==1) {
pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s22);
pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写"));
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s58);
}
else if (s7 ==2) {
pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s35);
pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写:"));
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s59);
}
else {
pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s53);
pPdfPainter->drawText(QRect(900, iTop, iContentWidth, 60), tr("合计大写:"));
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), s60);
}
pPdfPainter->drawLine(100,1220,2100,1220);
iTop += 90;
pPdfPainter->drawText(QRect(200, iTop, iContentWidth, 60), tr("收款单位:"));
pPdfPainter->drawText(QRect(400, iTop, iContentWidth, 60), s54);
pPdfPainter->drawText(QRect(650, iTop, iContentWidth, 60), tr("收款方式:"));
pPdfPainter->drawText(QRect(850, iTop, iContentWidth, 60), s55);
pPdfPainter->drawText(QRect(1200, iTop, iContentWidth, 60), tr("收款人:"));
pPdfPainter->drawText(QRect(1350, iTop, iContentWidth, 60), s56);
pPdfPainter->drawText(QRect(1550, iTop, iContentWidth, 60), tr("缴费人签字:"));
delete pPdfPainter;
delete pPdfWriter;
pdfFile.close();
}
}
void Charge::on_pushButton_search_clicked()
{
model->select();
QString name,phone,date,name1,phone1,date1;
int user_exist =0;
name = ui->lineEdit_name_2->text();
phone = ui->lineEdit_phone->text();
date = ui->dateTimeEdit->text();
QSqlQuery query;
query.exec("select * from user_information");
while(query.next()){
name1 = query.value(2).toString();
phone1 = query.value(4).toString();
date1 = query.value(0).toString();
//qDebug()<<classname<<classname1<<name<<name1<<phone<<phone1<<date<<date1;
if( !QString::compare(name, name1)&&!QString::compare(phone,phone1))
{
model->setFilter(QObject::tr("name = '%1'").arg(name)); //根据姓名进行筛选
model->select(); //显示结果
user_exist =1;
break;
}
}
if (user_exist==0) {
QMessageBox::about(nullptr, "提示", "账号或密码错误");
}
}
void Charge::on_pushButton_showAll_clicked()//tableview 设置
{
model->setTable("user_information");
//添加列号
model->select();
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,"金额");
model->setHeaderData(8,Qt::Horizontal,"收款单位");
model->setHeaderData(9,Qt::Horizontal,"付款方式");
model->setHeaderData(10,Qt::Horizontal,"收款人");
model->setHeaderData(11,Qt::Horizontal,"课程数目");
model->setHeaderData(12,Qt::Horizontal,"订单码");
ui->tableView_search->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->tableView_search->setSelectionBehavior(QAbstractItemView::SelectRows);
}
void Charge::on_pushButton_7_clicked()//删除按钮
{
int row = ui->tableView_search->currentIndex ().row ();
model->removeRow(row);
model->submitAll();
}
void Charge::on_tableView_search_clicked(const QModelIndex &index)//单击表格自动填充数据
{
int curRow=ui->tableView_search->currentIndex().row();//选中行
QAbstractItemModel *modessl = ui->tableView_search->model();
QModelIndex indextemp = modessl->index(curRow,11);//课程总数
QVariant datatemp = modessl->data(indextemp);
int classnum = datatemp.toInt();
//qDebug()<<classnum;
indextemp = modessl->index(curRow,0);//报名时间
datatemp = modessl->data(indextemp);
QDateTime datatime = datatemp.toDateTime();
QString date = datatemp.toString();
ui->dateTimeEdit1->setDateTime(datatime);
indextemp = modessl->index(curRow,1);//发票编号
datatemp = modessl->data(indextemp);
QString No =datatemp.toString();
ui->lineEdit_No->setText(No);
indextemp = modessl->index(curRow,2);//学生姓名
datatemp = modessl->data(indextemp);
QString stuname =datatemp.toString();
ui->lineEdit_name->setText(stuname);
indextemp = modessl->index(curRow,3);//性别
datatemp = modessl->data(indextemp);
QString sexual =datatemp.toString();
ui->comboBox->setCurrentText(sexual);
indextemp = modessl->index(curRow,4);//电话
datatemp = modessl->data(indextemp);
QString phone =datatemp.toString();
ui->lineEdit_phoneNumber->setText(phone);
indextemp = modessl->index(curRow,5);//学生类型
datatemp = modessl->data(indextemp);
QString stu =datatemp.toString();
ui->comboBox_students->setCurrentText(stu);
ui->comboBox_classSum->setCurrentIndex(classnum-1);//课程数目
indextemp = modessl->index(curRow,8);//收款单位
datatemp = modessl->data(indextemp);
QString payee1 =datatemp.toString();
ui->comboBox_receiver1->setCurrentText(payee1);
indextemp = modessl->index(curRow,9);//付款方式
datatemp = modessl->data(indextemp);
QString pay =datatemp.toString();
ui->comboBox_pay->setCurrentText(pay);
indextemp = modessl->index(curRow,10);//收款人
datatemp = modessl->data(indextemp);
QString payee2 =datatemp.toString();
ui->comboBox_receiver1->setCurrentText(payee2);
if (classnum == 1)
{ ui->stackedWidget->setCurrentIndex(0);
//课程名称
indextemp = modessl->index(curRow,6);
datatemp = modessl->data(indextemp);
QString classname =datatemp.toString();
ui->comboBox_className_8->setCurrentText(classname);
indextemp = modessl->index(curRow,7);//应收金额
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive1_8->setText(money);
ui->lineEdit_pay1_2->setText(money);
ui->lineEdit_sum->setText(money);//金额总数目
QString sum =numToChinese( classnum);
ui->lineEdit_sum_Big->setText(sum);//大写
}
else if (classnum ==2) {
ui->stackedWidget->setCurrentIndex(1);
QSqlQuery query;
QString money;
double money2=0;
double money3=0;
double money1=0;
QString name1,name2,phone1,phone2,date1,date2;
QString SqlStr = QString("select * from user_information where name ='%1'and date = '%2'").arg(stuname).arg(date);
query.exec(SqlStr);
if (query.next()) {
name1 = query.value(2).toString();
phone1 = query.value(4).toString();
date1 = query.value(0).toString();
int curRow=ui->tableView_search->currentIndex().row();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow,6);
datatemp = modessl->data(indextemp);
QString classname =datatemp.toString();
ui->comboBox_className_9->setCurrentText(classname);
//qDebug()<<classname<<"1";
indextemp = modessl->index(curRow,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
money1 = datatemp.toDouble();
//qDebug()<<money1<<"money1";
ui->lineEdit_receive1_3->setText(money);
if(query.next())
{
query.next();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
QString classname1 =datatemp.toString();
if (classname1=="")
curRow -=1;
else {
curRow += 1;
}
indextemp = modessl->index(curRow,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_7->setCurrentText(classname1);
indextemp = modessl->index(curRow,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive2_2->setText(money);
money2 = datatemp.toDouble();
//qDebug()<<money2<<"money2";
}
}
QString mon1= ui->lineEdit_receive1_3->text();//qDebug()<<mon1<<"1";
double mon11 =mon1.toDouble();
//qDebug()<<mon11<<"1";
QString mon2= ui->lineEdit_receive2_2->text();//qDebug()<<mon2<<"1";
double mon22 =mon2.toDouble();
money3 = mon11+mon22;
money = QString::number(money3,10,2);
ui->lineEdit_sum_3->setText(money);
QString sum =numToChinese( money3);
ui->lineEdit_sum_Big_3->setText(sum);
}//classnum ==2
else if (classnum ==3) {
ui->stackedWidget->setCurrentIndex(2);
QSqlQuery query;
QString money;
double money1=0;
QString name1,name2,phone1,phone2,date1,date2;
QString SqlStr = QString("select * from user_information where name ='%1'and date = '%2'").arg(stuname).arg(date);
query.exec(SqlStr);
if (query.next()) {
int curRow=ui->tableView_search->currentIndex().row();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow,6);
datatemp = modessl->data(indextemp);
QString classname =datatemp.toString();
ui->comboBox_className_15->setCurrentText(classname);
//qDebug()<<classname<<"1";
indextemp = modessl->index(curRow,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
money1 = datatemp.toDouble();
//qDebug()<<money1<<"money1";
ui->lineEdit_receive1_5->setText(money);
if(query.next())
{
query.next();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
QString classname1 =datatemp.toString();
if (classname1=="")
{ curRow -=1;
indextemp = modessl->index(curRow,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_14->setCurrentText(classname1);
indextemp = modessl->index(curRow,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive2_4->setText(money);
indextemp = modessl->index(curRow-1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_12->setCurrentText(classname1);
indextemp = modessl->index(curRow-1,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive3_3->setText(money);
}
else {
query.next();
// qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow+2,6);
datatemp = modessl->data(indextemp);
QString classname1 =datatemp.toString();
if(classname1=="")
{
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_14->setCurrentText(classname1);
indextemp = modessl->index(curRow+1,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive2_4->setText(money);
indextemp = modessl->index(curRow-1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_12->setCurrentText(classname1);
indextemp = modessl->index(curRow-1,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive3_3->setText(money);
}
else {
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_14->setCurrentText(classname1);
indextemp = modessl->index(curRow+1,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive2_4->setText(money);
indextemp = modessl->index(curRow+2,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_12->setCurrentText(classname1);
indextemp = modessl->index(curRow+2,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive3_3->setText(money);
}
}
}
}
QString mon1= ui->lineEdit_receive1_5->text();//qDebug()<<mon1<<"1";
double mon11 =mon1.toDouble();
//qDebug()<<mon11<<"1";
QString mon2= ui->lineEdit_receive2_4->text();//qDebug()<<mon2<<"1";
double mon22 =mon2.toDouble();
// qDebug()<<mon22<<"2";
QString mon3= ui->lineEdit_receive3_3->text();//qDebug()<<mon3<<"1";
double mon33 =mon3.toDouble();
// qDebug()<<mon33<<"3";
double moneyy = mon11+mon22+mon33;
// qDebug()<<moneyy<<"4";
money = QString::number(moneyy,10,2);
ui->lineEdit_sum_4->setText(money);
QString sum =numToChinese( moneyy);
ui->lineEdit_sum_Big_4->setText(sum);
}
else if (classnum ==4) {
ui->stackedWidget->setCurrentIndex(3);
QSqlQuery query;
QString money;
double money1=0;
QString name1,name2,phone1,phone2,date1,date2;
QString SqlStr = QString("select * from user_information where name ='%1'and date = '%2'").arg(stuname).arg(date);
query.exec(SqlStr);
if (query.next()) {
name1 = query.value(2).toString();
phone1 = query.value(4).toString();
date1 = query.value(0).toString();
int curRow=ui->tableView_search->currentIndex().row();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow,6);
datatemp = modessl->data(indextemp);
QString classname =datatemp.toString();
ui->comboBox_className_1->setCurrentText(classname);
//qDebug()<<classname<<"1";
indextemp = modessl->index(curRow,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
money1 = datatemp.toDouble();
//qDebug()<<money1<<"money1";
ui->lineEdit_receive1->setText(money);
if(query.next())
{
query.next();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
QString classname1 =datatemp.toString();
if (classname1=="")//点击最后一行
{
curRow -=1;
//第三行
indextemp = modessl->index(curRow,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_3->setCurrentText(classname1);
indextemp = modessl->index(curRow,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive3->setText(money);
//第二行
indextemp = modessl->index(curRow-1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_2->setCurrentText(classname1);
indextemp = modessl->index(curRow-1,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive2->setText(money);
// 第一行
indextemp = modessl->index(curRow-2,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_4->setCurrentText(classname1);
indextemp = modessl->index(curRow-2,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive4->setText(money);
}
else {
query.next();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow+2,6);
datatemp = modessl->data(indextemp);
QString classname1 =datatemp.toString();
if(classname1=="")//点击第三行
{
//第四行数据
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_4->setCurrentText(classname1);
indextemp = modessl->index(curRow+1,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive4->setText(money);
//第二行数据
indextemp = modessl->index(curRow-1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_3->setCurrentText(classname1);
indextemp = modessl->index(curRow-1,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive3->setText(money);
//第一行数据
indextemp = modessl->index(curRow-2,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_2->setCurrentText(classname1);
indextemp = modessl->index(curRow-2,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive2->setText(money);
}
else {
query.next();
//qDebug()<<curRow<<"current row";
indextemp = modessl->index(curRow+3,6);
datatemp = modessl->data(indextemp);
QString classname1 =datatemp.toString();
if(classname1==""){//点击的是第二行
//第三行
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_4->setCurrentText(classname1);
indextemp = modessl->index(curRow+1,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive4->setText(money);
//第四行
indextemp = modessl->index(curRow+2,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_3->setCurrentText(classname1);
indextemp = modessl->index(curRow+2,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive3->setText(money);
//第一行
indextemp = modessl->index(curRow-1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_2->setCurrentText(classname1);
indextemp = modessl->index(curRow-1,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive2->setText(money);
}
else{//点击的是第一行
//第二行
indextemp = modessl->index(curRow+1,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_4->setCurrentText(classname1);
indextemp = modessl->index(curRow+1,7);
datatemp = modessl->data(indextemp);
QString money =datatemp.toString();
ui->lineEdit_receive4->setText(money);
//第三行
indextemp = modessl->index(curRow+2,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_3->setCurrentText(classname1);
indextemp = modessl->index(curRow+2,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive3->setText(money);
//第四行
indextemp = modessl->index(curRow+3,6);
datatemp = modessl->data(indextemp);
classname1 =datatemp.toString();
ui->comboBox_className_2->setCurrentText(classname1);
indextemp = modessl->index(curRow+3,7);
datatemp = modessl->data(indextemp);
money =datatemp.toString();
ui->lineEdit_receive2->setText(money);
}
}
}
}
}
QString mon1= ui->lineEdit_receive1->text();
double mon11 =mon1.toDouble();
//qDebug()<<mon11<<"5";
QString mon2= ui->lineEdit_receive2->text();
double mon22 =mon2.toDouble(); //qDebug()<<mon22<<"6";
QString mon3= ui->lineEdit_receive3->text();
double mon33 =mon3.toDouble(); //qDebug()<<mon33<<"7";
QString mon4= ui->lineEdit_receive3->text();
double mon44 =mon4.toDouble(); //qDebug()<<mon44<<"8";
double moneyy = mon11+mon22+mon33+mon44;
money = QString::number(moneyy,10,2);
ui->lineEdit_sum_5->setText(money);
QString sum =numToChinese( moneyy);
ui->lineEdit_sum_Big_5->setText(sum);
}
}
void Charge::on_pushButton_3_clicked()//导出数据库
{
//获取创建的csv文件名
QString fileName = QFileDialog::getSaveFileName(this, tr("Excel file"), qApp->applicationDirPath (), tr("Files (*.csv)"));
if (fileName.isEmpty())
return;
//打开.csv文件
QFile file(fileName);
if(!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
std::cerr << "Cannot open file for writing: "
<< qPrintable(file.errorString()) << std::endl;
return;
}
QTextStream out(&file);
//获取数据
QSqlQuery sql_query;
QString select_sql = "select * from user_information";
if(!sql_query.exec(select_sql))
{
qDebug()<<sql_query.lastError();
}
else
{
while(sql_query.next())
{
QString s;
for(int i =0;i<12;i++){
s = sql_query.value(i).toString();
out <<s << ",";// 写入文件
}
out << "\n";
}
}
QMessageBox::information(this, tr("导出数据成功"), tr("信息已保存在%1!").arg(fileName), tr("确定"));
file.close();
}
void Charge::on_pushButton_2_clicked()//导入数据
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Excel file"), qApp->applicationDirPath (),
tr("Files (*.csv)"));
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
std::cerr << "Cannot open file for reading: "
<< qPrintable(file.errorString()) << std::endl;
return;
}
QStringList list;
QSqlQuery sql_query;
list.clear();
QTextStream in(&file);
while(!in.atEnd())
{
QString fileLine = in.readLine();
list = fileLine.split(",", QString::SkipEmptyParts);
qDebug()<<"list"<<list;
QString insert_sql = "INSERT INTO user_information VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,? ,? )";
sql_query.prepare(insert_sql);
QString s[13];
for(int i = 0;i<12;i++){
s[i]= list.at(i);
qDebug()<<s[i];
}
sql_query.addBindValue(list.at(0));
sql_query.addBindValue(list.at(1));
sql_query.addBindValue(list.at(2));
sql_query.addBindValue(list.at(3));
sql_query.addBindValue(list.at(4));
sql_query.addBindValue(list.at(5));
sql_query.addBindValue(list.at(6));
sql_query.addBindValue(list.at(7));//classname
sql_query.addBindValue(list.at(8));//总金额
sql_query.addBindValue(list.at(9));//收款单位
sql_query.addBindValue(list.at(10));//收款方式
sql_query.addBindValue(list.at(11));//收款人
sql_query.addBindValue("default");//主码
sql_query.exec();
file.close();
}
}
void Charge::on_lineEdit_receive1_8_textChanged(const QString &arg1)
{
ui->lineEdit_pay1_2->setText(arg1);
}
void Charge::on_lineEdit_receive1_3_textChanged(const QString &arg1)
{
ui->lineEdit_pay1_3->setText(arg1);
}
void Charge::on_lineEdit_receive2_2_textChanged(const QString &arg1)
{
ui->lineEdit_pay2_2->setText(arg1);
}
void Charge::on_lineEdit_receive1_5_textChanged(const QString &arg1)
{
ui->lineEdit_pay1_5->setText(arg1);
}
void Charge::on_lineEdit_receive2_4_textChanged(const QString &arg1)
{
ui->lineEdit_pay2_4->setText(arg1);
}
void Charge::on_lineEdit_receive3_3_textChanged(const QString &arg1)
{
ui->lineEdit_pay3_3->setText(arg1);
}
void Charge::on_lineEdit_receive1_textChanged(const QString &arg1)
{
ui->lineEdit_pay1->setText(arg1);
}
void Charge::on_lineEdit_receive2_textChanged(const QString &arg1)
{
ui->lineEdit_pay2->setText(arg1);
}
void Charge::on_lineEdit_receive3_textChanged(const QString &arg1)
{
ui->lineEdit_pay3->setText(arg1);
}
void Charge::on_lineEdit_receive4_textChanged(const QString &arg1)
{
ui->lineEdit_pay4->setText(arg1);
}
来源:CSDN
作者:peaceminosone
链接:https://blog.csdn.net/peaceminosone/article/details/103485282