#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
InitializeUI();
BindSigAndSlot();
isPrintSuccess = false;
//student
ui->LE_StuName->setMaxLength(10);
ui->LE_StuNumber->setMaxLength(10);
//department
}
MainWindow::~MainWindow()
{
delete ui;
}
//初始化界面的控件,创建或读取ini文件。
void MainWindow::InitializeUI()
{
Qt::WindowFlags flags=Qt::Dialog;
flags |= Qt::WindowMinimizeButtonHint;
setWindowFlags(flags);
QDesktopWidget* desktop = QApplication::desktop();
move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2);
QString ldt = dt.currentDateTime().toString(trUtf8("yyyy年M月dd日"));
ui->label_currentDateDep->setText(ldt);
ui->label_currentDateStu->setText(ldt);
ui->CB_Department->setEditable(true);
ui->CB_Department->hasFocus();
ui->CB_Project->setEditable(true);
if(QFile::exists("Config.ini"))
{
QStringList depList = ReadDepIni();
ui->CB_Department->addItem("");
ui->CB_Department->addItems(depList);
QStringList proList = ReadProIni();
ui->CB_Project->addItem("");
ui->CB_Project->addItems(proList);
}
}
//绑定所有的槽函数
void MainWindow::BindSigAndSlot()
{
connect(ui->pB_DQuite, SIGNAL(clicked()), qApp, SLOT(quit()));
connect(ui->pB_SQuite, SIGNAL(clicked()), qApp, SLOT(quit()));
connect(ui->pB_DSaveAndPrint, SIGNAL(clicked()), this, SLOT(pBDepPSClicked()));
connect(ui->pB_SSaveAndPrint, SIGNAL(clicked()),this, SLOT(pBStuPSClicked()));
}
//部门打印按钮的槽函数
void MainWindow::pBDepPSClicked()
{
QString moneyAmount = ui->LE_DepAmountofMoney->text();
QString pattern("[0-9]*");
QRegExp rx(pattern);
bool match = rx.exactMatch(moneyAmount);
if(match)
{
PrintDepartText();
if(isPrintSuccess)
{
if(QFile::exists("DepartmentRecord.xml"))
{
DSaveToXml();
}
else
{
CreatDXml();
DSaveToXml();
}
//if(QFile::exists(""))
CreatIni();
QStringList depList = ReadDepIni();
ui->CB_Department->clear();
ui->CB_Department->addItem("");
ui->CB_Department->addItems(depList);
QStringList proList = ReadProIni();
ui->CB_Project->clear();
ui->CB_Project->addItem("");
ui->CB_Project->addItems(proList);
QStringList nameList = ReadNameIni();
ui->LE_DepName->clear();
ui->LE_DepName->addItem("");
ui->LE_DepName->addItems(nameList);
}
}
else
{
QMessageBox msgBox;
msgBox.setText(trUtf8("金额必须为数字!"));
msgBox.exec();
}
}
//学生打印按钮的槽函数
void MainWindow::pBStuPSClicked()
{
QString moneyAmount = ui->LE_StuAmountofMoney->text();
QString pattern("[0-9]*");
QRegExp rx(pattern);
bool match = rx.exactMatch(moneyAmount);
if(match)
{
PrintStudentText();
if(isPrintSuccess)
{
if(QFile::exists("StudentRecord.xml"))
{
SSaveToXml();
}
else
{
CreatSXml();
SSaveToXml();
}
}
}
else
{
QMessageBox msgBox;
msgBox.setText(trUtf8("金额必须为数字!"));
msgBox.exec();
}
}
//创建部门记录的xml文件
void MainWindow::CreatDXml()
{
QFile newDXml("./DepartmentRecord.xml");
newDXml.open(QIODevice::Append|QIODevice::Text|QIODevice::ReadWrite);
QDomDocument modelDoc;
QDomProcessingInstruction instruction;
instruction = modelDoc.createProcessingInstruction("xml version=\"1.0\"", "encoding=\"UTF-8\"");
modelDoc.appendChild(instruction);
instruction = modelDoc.createProcessingInstruction("mso-application progid=\"Excel.Sheet\"", "");
modelDoc.appendChild(instruction);
//生成根节点
QDomElement root = modelDoc.createElement("Workbook");
//添加预处理指令,有了这些,才能用excel直接打开xml文件
root.setAttribute("xmlns", "urn:schemas-microsoft-com:office:spreadsheet");
root.setAttribute("xmlns:o", "urn:schemas-microsoft-com:office:office");
root.setAttribute("xmlns:x", "urn:schemas-microsoft-com:office:excel");
//root.setAttribute("xmlns:ss","urn:schemas-microsoft-com:office:spreadsheet");
//root.setAttribute("xmlns:html","http://www.w3.org/TR/REC-html40");
modelDoc.appendChild(root); //添加根元素
QDomElement workSheet = modelDoc.createElement("Worksheet");
QDomAttr rootAttr = modelDoc.createAttribute("ss:Name");
rootAttr.setValue("Sheet1");
workSheet.setAttributeNode(rootAttr);
root.appendChild(workSheet);
QDomElement table = modelDoc.createElement("Table");
workSheet.appendChild(table);
QString count;
//纯数据行数
count = count.setNum(8);
table.setAttribute("ss:ExpandedColumnCount", count);
count.clear();
count = count.setNum(65535); //加上列头1行
table.setAttribute("ss:ExpandedRowCount", count);
table.setAttribute("x:FullColumns", "1");
table.setAttribute("x:FullRows", "1");
table.setAttribute("ss:DefaultColumnWidth", "120");
table.setAttribute("ss:DefaultRowHeight", "13");
//定义xml树的节点
QDomElement modelElement;
QDomElement dataElement;
QDomText modelElementNodeText;
//写列头
QDomElement row = modelDoc.createElement("Row");
table.appendChild(row);
modelElement = modelDoc.createElement("Cell");
dataElement = modelDoc.createElement("Data");
dataElement.setAttribute("ss:Type", "String");
modelElement.appendChild(dataElement);
modelElementNodeText = modelDoc.createTextNode(trUtf8("时间"));
dataElement.appendChild(modelElementNodeText);
row.appendChild(modelElement);
modelElement = modelDoc.createElement("Cell");
dataElement = modelDoc.createElement("Data");
dataElement.setAttribute("ss:Type", "String");
modelElement.appendChild(dataElement);
modelElementNodeText = modelDoc.createTextNode(trUtf8("部门"));
dataElement.appendChild(modelElementNodeText);
row.appendChild(modelElement);
modelElement = modelDoc.createElement("Cell");
dataElement = modelDoc.createElement("Data");
dataElement.setAttribute("ss:Type", "String");
modelElement.appendChild(dataElement);
modelElementNodeText = modelDoc.createTextNode(trUtf8("姓名"));
dataElement.appendChild(modelElementNodeText);
row.appendChild(modelElement);
modelElement = modelDoc.createElement("Cell");
dataElement = modelDoc.createElement("Data");
dataElement.setAttribute("ss:Type", "String");
modelElement.appendChild(dataElement);
modelElementNodeText = modelDoc.createTextNode(trUtf8("项目"));
dataElement.appendChild(modelElementNodeText);
row.appendChild(modelElement);
modelElement = modelDoc.createElement("Cell");
dataElement = modelDoc.createElement("Data");
dataElement.setAttribute("ss:Type", "String");
modelElement.appendChild(dataElement);
modelElementNodeText = modelDoc.createTextNode(trUtf8("收费方式"));
dataElement.appendChild(modelElementNodeText);
row.appendChild(modelElement);
modelElement = modelDoc.createElement("Cell");
dataElement = modelDoc.createElement("Data");
dataElement.setAttribute("ss:Type", "String");
modelElement.appendChild(dataElement);
m
- 1
- 2
前往页