2026年5月25日15:57:50

This commit is contained in:
2026-05-25 15:58:11 +08:00
parent 1cb9d5ac42
commit 358a56f602
20 changed files with 413 additions and 492 deletions
+11 -258
View File
@@ -133,31 +133,14 @@ void DateVarSet::bindSysPara(SysPara *sysPara){
this->sysPara = sysPara;
}
void DateVarSet::bindTxTEdit(QTextEdit* textEdit){
m_textEdit = textEdit;
}
void DateVarSet::buttonClickedSlot()
{
QPushButton* btn = qobject_cast<QPushButton*>(sender());
if (btn == ui->checkBtn) {
if(true)
useReplaceInsertVar();
else
on_buttonInsertVari_pressed();
auto item = dynamic_cast<PicDateItem*>(m_generalSettings->currentItem());
if(item)
item->setModel(dateModel());
if (btn == ui->checkBtn) {
emit sendButtonClickedSignal(1);
return;
}else if(btn == ui->closeBtn) {
auto item = m_generalSettings->currentItem();
if(item)
item->setAttrs(m_backup);
emit sendButtonClickedSignal(2);
return;
@@ -211,246 +194,12 @@ DateVarSet::~DateVarSet()
void DateVarSet::getValue(int *varType,int *digitalWidth,unsigned char *splitMode){
int type = 0,width = 0;
// if(ui->radioButtonYear->isChecked())
// type = 0;
// else if(ui->radioButtonMonth->isChecked())
// type = 1;
// else if(ui->radioButtonDay->isChecked())
// type = 2;
// else if(ui->radioButtonWeek->isChecked())
// type = 3;
// else if(ui->radioButtonHour->isChecked())
// type = 4;
// else if(ui->radioButtonMinute->isChecked())
// type = 5;
// else if(ui->radioButtonSecond->isChecked())
// type = 6;
// else if(ui->radioButtonXDay->isChecked())
// type = 14;
// else if(ui->radioButtonExpiry->isChecked())
// {
// type = 80;
// }
// else if(ui->radioButtonCurDate->isChecked())
// {
// type = 81;
// }
// width = ui->cb_digits->currentText().toInt();
if(varType && digitalWidth){
*varType = type;
*digitalWidth = width;
}
}
void DateVarSet::on_buttonInsertVari_pressed()
{
QString s,fontname="";
if(sysPara)
{
s= sysPara->para.qrOption.text;
if(s.length()>120)s="string to long.";
}
int pixelSize = 9;
QFont font;
fontname = "Dinkie9";
if(m_generalSettings->currentItem()) {
fontname = m_generalSettings->font().family();
}
else {
font.setFamily(fontname);
font.setPixelSize(pixelSize);
font.setWeight(false && (pixelSize<=16) ?QFont::Bold:QFont::Normal);
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
}
QFontMetrics fontMetrics(font);
int width = (fontMetrics.width("0123456789"))/10;
int height = fontMetrics.ascent()+ fontMetrics.descent();
int digitalNum;
int varType;
height = font.pixelSize();
unsigned char splitMode=sysPara->para.ExpirySplitMode;
getValue(&varType,&digitalNum,&splitMode);
fmt = m_textEdit->currentCharFormat ();
if((varType<9 || varType==14))
{
int varType1= varType;
if(fontname.contains("SerifL") ||fontname.contains("serifl") )
varType1= 20+varType;
else if(fontname.contains("SerifR") ||fontname.contains("serifr") )
varType1= 20+varType;
else if(fontname.contains("bangla") )
varType1= 30+varType;
else if(fontname.contains("biyangF") )
varType1= 50+varType;
else if(fontname.contains("Roman") )
varType1= 60+varType;
// varType1= 40+varType; // 变量右横时取 40,左横时取 20
m_textEdit->insertHtml(QString("<img src=':/%1/%5/../image/digitalWidth%2.bmp' height='%3' width='%4' style=\"vertical-align: bottom;\" />")
.arg(varType).arg(false && (pixelSize<=16)?(digitalNum*100 + 75):digitalNum)
.arg(height+1).arg(width*digitalNum).arg(varType1)); //插入索引后
qDebug() << m_textEdit->toHtml();
} // 普通变量 VarType<=8
else if(varType ==EXPIRYDATE){ //80 :/80/image/expiryDate8.bmp qrc:/80/image/expiryDate875.bmp
// QImage img;
// img.load("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/80/image/digitalWidth8.bmp");
// img.setPixel(0,4,0xffff0Cfc);
// img.setPixel(0,5,0xffff0Cfc);
// img.save("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/80/image/curDate8.bmp");
// 0xff00fc
int varType1 = varType;
if(fontname.contains("bangla") )
{
varType1= 10+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 20+varType;
}
else if(fontname.contains("Roman") )
{
varType1= 30+varType;
}
sysPara->print.ExpiryVar.splitMode=splitMode;
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
QFontMetrics fontMetrics(font);
QHash<int, QString> dateFormat;
dateFormat.insert(0,"yyyy-MM-dd");
dateFormat.insert(1,"yyyy/MM/dd");
dateFormat.insert(2,"yyyyMMdd");
dateFormat.insert(3,"yyyy年MM月dd日");
dateFormat.insert(4,"yyyy-MM-dd hh:mm");
dateFormat.insert(5,"yyyy/MM/dd hh:mm");
dateFormat.insert(6,"yyyyMMddhhmm");
dateFormat.insert(7,"yyyy年MM月dd日 hh:mm");
dateFormat.insert(8,"hh:mm");
dateFormat.insert(9,"ddhhmm");
dateFormat.insert(10,"dd MM yy");
dateFormat.insert(11,"dd/MM/yy");
dateFormat.insert(12,"dd/MM/yyyy");
dateFormat.insert(13,"dd-MM-yy");
dateFormat.insert(14,"dd-MM-yyyy");
//dateFormat.insert(10,"x");
QString DateTime = QDateTime::currentDateTime().toString(dateFormat.value(splitMode));
int dateTimeWidth = fontMetrics.width(DateTime);
if(DateTime == "x")
{
qDebug()<<" x handle";
m_textEdit->insertHtml(QString("<img src=':/%1/image/digitalWidth%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(false && (pixelSize<=16)?(175):1)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
sysPara->print.ExpiryVar.bold = false;
m_textEdit->mergeCurrentCharFormat(fmt);
}else
{
if(splitMode == 3 || splitMode ==7 )
{
height = fontMetrics.ascent();
}
m_textEdit->insertHtml(QString("<img src=':/%1/image/expiryDate%2.bmp' height='%3' width='%4' style=\"vertical-align: bottom;\" />")
.arg(varType1).arg(false && (pixelSize<=16)?(875):8)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
sysPara->print.ExpiryVar.bold = false;
m_textEdit->mergeCurrentCharFormat(fmt);
}
}
else if(varType ==CURDATE ){ //81 :/80/image/expiryDate8.bmp qrc:/80/image/curDate8.bmp
int varType1 = varType;
if(fontname.contains("bangla") )
{
varType1= 10+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 20+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 30+varType;
}
// 0xff00fc
//qDebug()<<"CurDateVar height"<<height;
sysPara->print.CurDateVar.splitMode = splitMode;
font.setLetterSpacing(QFont::AbsoluteSpacing, sysPara->para.textEditCharSpace);
QFontMetrics fontMetrics(font);
QHash<int, QString> dateFormat;
dateFormat.insert(0,"yyyy-MM-dd");
dateFormat.insert(1,"yyyy/MM/dd");
dateFormat.insert(2,"yyyyMMdd");
dateFormat.insert(3,"yyyy年MM月dd日");
dateFormat.insert(4,"yyyy-MM-dd hh:mm");
dateFormat.insert(5,"yyyy/MM/dd hh:mm");
dateFormat.insert(6,"yyyyMMddhhmm");
dateFormat.insert(7,"yyyy年MM月dd日 hh:mm");
dateFormat.insert(8,"hh:mm");
dateFormat.insert(9,"ddhhmm");
dateFormat.insert(10,"dd MM yy");
dateFormat.insert(11,"dd/MM/yy");
dateFormat.insert(12,"dd/MM/yyyy");
dateFormat.insert(13,"dd-MM-yy");
dateFormat.insert(14,"dd-MM-yyyy");
QString DateTime = QDateTime::currentDateTime().toString(dateFormat.value(splitMode));
int dateTimeWidth = fontMetrics.width(DateTime) ;
qDebug()<<"insert splitMode="<<splitMode;
if(DateTime == "x")
{
qDebug()<<" x handle";
m_textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(false && (pixelSize<=16)?(875):1)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
m_textEdit->mergeCurrentCharFormat(fmt);
}else
{
if(splitMode == 3 || splitMode ==7 )
{
height = fontMetrics.ascent();//fontMetrics.ascent()+ fontMetrics.descent();
}
m_textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4' style=\"vertical-align: bottom;\"/>")
.arg(varType1).arg(false && (pixelSize<=16)?(875):8)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
m_textEdit->mergeCurrentCharFormat(fmt);
}
}
m_textEdit->setFocus();
}
void DateVarSet::edit(PicDateItem*item)
{
m_backup.clear();
if(!item) {
qWarning() << "Invalied arguement: " << item;
return;
}
item->saveAttrs(m_backup);
m_generalSettings->edit(item);
setDateModel(item->model());
}
DateItemModel DateVarSet::dateModel()
{
DateItemModel model;
@@ -512,16 +261,20 @@ void DateVarSet::setDateModel(const DateItemModel &model)
ui->tabWidget->setCurrentIndex(1);
}
void DateVarSet::useReplaceInsertVar(){
QString dateFormat = ui->lineEdit_DateFormat->text();
m_textEdit->setText(dateFormat);
}
QString DateVarSet::getFamilyName(int fontsize){
return "YaHei"+QString::number(fontsize);
}
TextItemModel DateVarSet::textItemModeL()
{
return m_generalSettings->viewModel();
}
void DateVarSet::setTextItemModel(const TextItemModel &model)
{
m_generalSettings->setViewModel(model);
}
void DateVarSet::applyStyleSheet()
{
QString styleSheet =