2026年6月25日 暂存
This commit is contained in:
+26
-296
@@ -20,9 +20,7 @@
|
||||
|
||||
#pragma execution_character_set("utf-8")
|
||||
|
||||
extern unsigned char vartypeR;
|
||||
//extern QMap<int,QStringList> replaceValueMap;
|
||||
extern QMap<int,QMap<int,QString>> replaceValueMap;
|
||||
|
||||
TestPrintWidget::TestPrintWidget(QWidget* parent)
|
||||
: QWidget(parent)
|
||||
{
|
||||
@@ -45,8 +43,6 @@ TestPrintWidget::TestPrintWidget(QWidget* parent)
|
||||
m_ButtonGroup->addButton(ui.btnArrow, 6);
|
||||
// m_ButtonGroup->addButton(ui.btnList, 7);
|
||||
|
||||
dialogFontSize = new DialogFontSize(0);
|
||||
|
||||
dialogSaveFile =new DialogSaveFile(0);
|
||||
|
||||
dialogFileOperation = new DialogFileOperation(0);
|
||||
@@ -56,13 +52,10 @@ TestPrintWidget::TestPrintWidget(QWidget* parent)
|
||||
m_pSavePicScene->setSceneRect(QRectF(0, 0, 3200, MAX_PRINT_ROW_NUM)); //生成图片的场景
|
||||
|
||||
editMode = SCENE;
|
||||
// 窗口基础设置(UI文件已配置,此处可保留或移除)
|
||||
setWindowTitle("Testprint");
|
||||
resize(800, 600);
|
||||
// setStyleSheet("QWidget { font-family: Arial; font-size: 12px; }");
|
||||
|
||||
m_TextEdit = new QTextEdit(0);
|
||||
m_TextEdit->setLineWrapMode(QTextEdit::NoWrap);
|
||||
|
||||
// 获取文档并设置边距为0
|
||||
m_TextEdit->document()->setDocumentMargin(0);
|
||||
QFont font;
|
||||
@@ -79,14 +72,11 @@ TestPrintWidget::TestPrintWidget(QWidget* parent)
|
||||
// ui->senceEditOption->bindScene(pPicScene, ui->graphicsView, ui->textEdit);
|
||||
this->pPicScene->setIsdrawBackground(true);
|
||||
|
||||
// 哪个天才写的?拿view和scene计算一下会死吗?
|
||||
for(int i=0;i<3;i++){
|
||||
on_enlargeButton_pressed();
|
||||
}
|
||||
|
||||
// connect(dialogSaveFile,SIGNAL(saveFile(QString,bool)),this,SLOT(onSaveASFile(QString,bool)));
|
||||
|
||||
// ui.graphicsView->installEventFilter(this);
|
||||
|
||||
connect(pPicScene,&PicScene::selectionChanged,this,[=]() {
|
||||
getShowSelectItemText();
|
||||
});
|
||||
@@ -114,10 +104,6 @@ TestPrintWidget::TestPrintWidget(QWidget* parent)
|
||||
connect(ui.btnListConfig, &QPushButton::clicked, [this]() {
|
||||
emit sendButtonClickedSignal(9);
|
||||
});
|
||||
// connect(ui.btnAConfig, &QPushButton::clicked, [this]() {
|
||||
// emit sendButtonClickedSignal(10);
|
||||
// // on_buttonSelectFont_pressed();
|
||||
// });
|
||||
|
||||
connect(ui.btnItemConfig, &QPushButton::clicked, this, &TestPrintWidget::onBtnItemConfigClicked);
|
||||
|
||||
@@ -127,15 +113,6 @@ TestPrintWidget::TestPrintWidget(QWidget* parent)
|
||||
on_delButton_pressed();
|
||||
});
|
||||
|
||||
// 分辨率下拉框(保留原空逻辑)
|
||||
// mei le
|
||||
|
||||
// 地区下拉框(保留原空逻辑)
|
||||
connect(ui.cbLocale, QOverload<int>::of(&QComboBox::currentIndexChanged),
|
||||
[=](int index) {
|
||||
//qDebug() << "选择地区:" << ui.cbLocale->currentText();
|
||||
});
|
||||
|
||||
// 控制区第一行按钮
|
||||
connect(ui.m_btnLeft_Control1, &QPushButton::clicked, this, &TestPrintWidget::selectPreviousItem);
|
||||
connect(ui.m_btnRight_Control1, &QPushButton::clicked, this, &TestPrintWidget::selectNextItem);
|
||||
@@ -220,8 +197,6 @@ TestPrintWidget::TestPrintWidget(QWidget* parent)
|
||||
m_LineEdit->setProperty("Enter replace enter", true);
|
||||
connect(m_LineEdit, &QLineEdit::returnPressed, this, &TestPrintWidget::onLineEditReturnPressed);
|
||||
|
||||
initSelecteCodeDlg();
|
||||
|
||||
// 网络通信,暂时屏蔽
|
||||
// ui.btnList->hide();
|
||||
}
|
||||
@@ -284,6 +259,8 @@ void TestPrintWidget::on_enlargeButton_pressed()
|
||||
// qDebug() << pViewer->devicePixelRatioFScale();
|
||||
// qDebug() << pViewer->devicePixelRatioF();
|
||||
// pViewer->scale(scaleFactor, scaleFactor);
|
||||
|
||||
// TODO:: 保留,以后真的要用到放大缩小
|
||||
((MyView*)pViewer)->ZoomOut();
|
||||
}
|
||||
|
||||
@@ -291,7 +268,6 @@ void TestPrintWidget::on_addButton_pressed(const SourceType type)
|
||||
{
|
||||
addItemFlag = false;
|
||||
m_LineEdit->setEnabled(true);
|
||||
m_TextEdit->clear();
|
||||
m_LineEdit->setText("");
|
||||
pPicScene->clearSelection();
|
||||
textItem = new PicTextItem(0, 0, type);
|
||||
@@ -310,172 +286,29 @@ void TestPrintWidget::on_addButton_pressed(const SourceType type)
|
||||
textItem->setPlainText("");
|
||||
textItem->setSelected(true);
|
||||
|
||||
if(varReplaceItemMap.size()>0){
|
||||
QMap<int, ItemReplaceInfo> newMap;
|
||||
for (auto it = varReplaceItemMap.begin(); it != varReplaceItemMap.end(); ++it) {
|
||||
newMap.insert(it.key() + 1, it.value()); // key直接+1
|
||||
}
|
||||
varReplaceItemMap = newMap; // 原子替换
|
||||
}
|
||||
|
||||
addItemFlag = true;
|
||||
}
|
||||
|
||||
void TestPrintWidget::onEditItemDone()
|
||||
{
|
||||
//Scene Test
|
||||
QList<QGraphicsItem *> items=pPicScene->items();
|
||||
int index=0;
|
||||
bool flag = false;
|
||||
for(int i=0;i<items.size();i++){
|
||||
index=i;
|
||||
if(items.at(i)->isSelected()){
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
QString content = m_LineEdit->text();
|
||||
m_TextEdit->setText(content);
|
||||
if(!flag){
|
||||
return;
|
||||
}
|
||||
|
||||
if(!m_TextEdit->toHtml().contains("<img src=")){
|
||||
QString content = m_LineEdit->text();
|
||||
m_TextEdit->clear();
|
||||
m_TextEdit->setText(content);
|
||||
}
|
||||
|
||||
const QString content = m_LineEdit->text();
|
||||
foreach (QGraphicsItem *item, pPicScene->selectedItems())
|
||||
{
|
||||
PicTextItem *pTextItem = (PicTextItem *)item;
|
||||
QFont font = pTextItem->font();
|
||||
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
|
||||
font.setStyleStrategy(QFont::NoAntialias);
|
||||
pTextItem->setLetterSpace(sysPara->para.textEditCharSpace);
|
||||
pTextItem->setFont(font);
|
||||
m_TextEdit->setFont(font);
|
||||
|
||||
createItemImage();
|
||||
QString html = "<img src=\"/home/plg/doc/scene.png\" />";
|
||||
m_TextEdit->setHtml(html);
|
||||
|
||||
pTextItem->setHtml(m_TextEdit->toHtml());
|
||||
pTextItem->setSource(content);
|
||||
if(pTextItem->sourceType() == SourceType::TEXT)
|
||||
pTextItem->setSource(content);
|
||||
}
|
||||
}
|
||||
|
||||
void TestPrintWidget::onEditItemCounterDone(){
|
||||
|
||||
//Scene Test
|
||||
QList<QGraphicsItem *> items=pPicScene->items();
|
||||
int index = checkSelectScene();
|
||||
if (index < 0) return;
|
||||
|
||||
QString html = m_TextEdit->toHtml();
|
||||
|
||||
// 计数器1、2的source值 image path: "/7/7...."
|
||||
QString source = html.contains("7/7")? SOURCE_COUNTER1 : SOURCE_COUNTER2;
|
||||
|
||||
foreach (QGraphicsItem *item, pPicScene->selectedItems())
|
||||
{
|
||||
PicTextItem *pTextItem = (PicTextItem *)item;
|
||||
QFont font = pTextItem->font();
|
||||
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
|
||||
font.setStyleStrategy(QFont::NoAntialias);
|
||||
pTextItem->setFont(font);
|
||||
pTextItem->setSource(source);
|
||||
|
||||
if(!m_TextEdit->toHtml().contains("<img src=")){
|
||||
//把当前内容保存为图片
|
||||
createItemImage();
|
||||
//将图片设置到编辑器里
|
||||
QString html = "<img src=\"/home/plg/doc/scene.png\" />";
|
||||
m_TextEdit->setHtml(html);
|
||||
}
|
||||
|
||||
pTextItem->setHtml(m_TextEdit->toHtml());
|
||||
}
|
||||
}
|
||||
|
||||
void TestPrintWidget::onReplaceVarEditDone()
|
||||
{
|
||||
//Scene Test
|
||||
QList<QGraphicsItem *> items=pPicScene->items();
|
||||
int index=0;
|
||||
for(int i=0;i<items.size();i++){
|
||||
index=i;
|
||||
if(items.at(i)->isSelected()){
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (QGraphicsItem *item, pPicScene->selectedItems())
|
||||
{
|
||||
if(item)
|
||||
{
|
||||
PicTextItem *pTextItem = (PicTextItem *)item;
|
||||
QFont font = pTextItem->font();
|
||||
// font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
|
||||
pTextItem->setFont(font);
|
||||
|
||||
if(!m_TextEdit->toHtml().contains("<img src=")){
|
||||
createItemImage();
|
||||
QString html = "<img src=\"/home/plg/doc/scene.png\" />";
|
||||
m_TextEdit->setHtml(html);
|
||||
}
|
||||
// std::cout<<"m_TextEdit:"<<m_TextEdit->toHtml().toStdString()<<std::endl;
|
||||
pTextItem->setHtml(m_TextEdit->toHtml());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TestPrintWidget::createItemImage()
|
||||
{
|
||||
int coldot = (int)m_TextEdit->document()->size().width();
|
||||
QSize size(coldot,20);
|
||||
// doc->adjustSize();
|
||||
// QSize docSize = doc->size().toSize();
|
||||
m_TextEdit->document()->adjustSize(); // 或 m_TextEdit->document()->size().toSize();
|
||||
m_TextEdit->adjustSize();
|
||||
QSize docSize = m_TextEdit->document()->size().toSize();
|
||||
QImage image(docSize,QImage::Format_ARGB32);
|
||||
// image.fill(0x00ffffff);//填充白色
|
||||
image.fill(Qt::transparent);
|
||||
QPainter painter(&image);
|
||||
m_TextEdit->document()->drawContents (&painter, image.rect()); /*将text写到pic*/
|
||||
image.save("/home/plg/doc/scene.png");
|
||||
}
|
||||
|
||||
void TestPrintWidget::getShowSelectItemText()
|
||||
{
|
||||
//Scene Test
|
||||
QList<QGraphicsItem *> items=pPicScene->items();
|
||||
int index=0;
|
||||
bool flag = false;
|
||||
for(int i=0;i<items.size();i++){
|
||||
index=i;
|
||||
if(items.at(i)->isSelected()){
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(flag){
|
||||
if(varReplaceItemMap.contains(index) && addItemFlag){
|
||||
ui.m_LineEdit->setEnabled(false);
|
||||
ui.m_LineEdit->setText("{t}");
|
||||
return;
|
||||
}
|
||||
else
|
||||
ui.m_LineEdit->setEnabled(true);
|
||||
}else{
|
||||
ui.m_LineEdit->setEnabled(false);
|
||||
ui.m_LineEdit->setText("");
|
||||
return;
|
||||
}
|
||||
ui.m_LineEdit->setEnabled(false);
|
||||
ui.m_LineEdit->setText("");
|
||||
|
||||
// 选择最后一个被选中的 item,防一手而已,事实上不应允许多选
|
||||
// 直接选第一个被选中的 item,也是可以的
|
||||
auto selectedItems = pPicScene->selectedItems();
|
||||
|
||||
PicTextItem* lastSelectedTxtItem = nullptr;
|
||||
@@ -492,6 +325,7 @@ void TestPrintWidget::getShowSelectItemText()
|
||||
|
||||
// 对于文本item,将它的文本显示到编辑框
|
||||
if(lastSelectedTxtItem->sourceType() == SourceType::TEXT) {
|
||||
ui.m_LineEdit->setEnabled(true);
|
||||
m_LineEdit->setText(lastSelectedTxtItem->source().toString());
|
||||
}
|
||||
|
||||
@@ -512,9 +346,11 @@ void TestPrintWidget::getShowSelectItemText()
|
||||
return;
|
||||
}
|
||||
|
||||
// 锁住信号再设置,避免设置后触发 cbResolution 的信号
|
||||
auto b = ui.cbResolution->blockSignals(true);
|
||||
ui.cbResolution->setCurrentIndex(fontNameToIndex[currItemFontFamily]);
|
||||
ui.cbResolution->blockSignals(b);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -717,14 +553,6 @@ void TestPrintWidget::onFileOpen(QString filePath,bool insertFlag){
|
||||
//qDebug()<<"textedit txt mode onFileOpen" << sysPara->sysFile;
|
||||
snprintf(sysPara->para.lastOpenedFileName,sizeof(sysPara->para.lastOpenedFileName),"%s",filePath.toLatin1().constData());
|
||||
}
|
||||
|
||||
// emit fileNameChanged(QFileInfo(xmlfileName).fileName());
|
||||
// ui->saveButton->setEnabled(false);
|
||||
QList<QGraphicsItem *> items = pPicScene->items();
|
||||
foreach (QGraphicsItem *item, items) {
|
||||
PicTextItem *picText = qgraphicsitem_cast<PicTextItem*>(item);
|
||||
onSceneAccepted(picText);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -914,54 +742,10 @@ void TestPrintWidget::parseVbfile(QXmlStreamReader &reader) {
|
||||
}
|
||||
}
|
||||
|
||||
void TestPrintWidget::onSceneAccepted(PicTextItem *pTextItem){
|
||||
//dialogLineSpace->getValue(&sysPara->para.textEditLineSpace,&sysPara->para.textEditCharSpace);
|
||||
for(QTextBlock textBlock = pTextItem->document()->begin();textBlock != pTextItem->document()->end(); textBlock = textBlock.next()){
|
||||
// textBlock.setVisible(false);
|
||||
QTextBlockFormat textBlockFormat = textBlock.blockFormat();
|
||||
textBlockFormat.setAlignment(Qt::AlignTop);
|
||||
textBlockFormat.setTopMargin(-1);
|
||||
//textBlockFormat.setLineHeight(sysPara->para.fontPixelSize + sysPara->para.textEditLineSpace, QTextBlockFormat::FixedHeight);
|
||||
//textBlockFormat.setLineHeight(0, QTextBlockFormat::LineDistanceHeight);
|
||||
textBlockFormat.setBottomMargin(sysPara->para.textEditLineSpace-1);
|
||||
//textBlockFormat.setBottomMargin(-1);
|
||||
QTextCursor textCursor = pTextItem->textCursor();
|
||||
textCursor.setPosition(textBlock.position());
|
||||
textCursor.setBlockFormat(textBlockFormat);
|
||||
pTextItem->setTextCursor(textCursor);
|
||||
}
|
||||
|
||||
// QTextCharFormat fmt;
|
||||
// //fmt.setFontWordSpacing(sysPara->para.textEditCharSpace);
|
||||
// fmt.setFontLetterSpacing(sysPara->para.textEditCharSpace); qDebug() << sysPara->para.textEditCharSpace;
|
||||
// mergeFormatOnWordOrSelection(fmt);
|
||||
// pTextItem->setLetterSpace(sysPara->para.textEditCharSpace);
|
||||
sysPara->saveParaToFile();
|
||||
}
|
||||
|
||||
void TestPrintWidget::initSelecteCodeDlg()
|
||||
{
|
||||
m_SelectCodeDlg = new SelectCodeDlg(this);
|
||||
connect(m_SelectCodeDlg, &SelectCodeDlg::sig_cancelEdit, this, [=]() {
|
||||
m_SelectCodeDlg->close();
|
||||
} );
|
||||
|
||||
connect(m_SelectCodeDlg, &SelectCodeDlg::sig_editBarCode, this, [=]() {
|
||||
m_SelectCodeDlg->close();
|
||||
emit sendButtonClickedSignal(201);
|
||||
} );
|
||||
|
||||
connect(m_SelectCodeDlg, &SelectCodeDlg::sig_editQRCode, this, [=]() {
|
||||
m_SelectCodeDlg->close();
|
||||
emit sendButtonClickedSignal(202);
|
||||
} );
|
||||
}
|
||||
|
||||
void TestPrintWidget::addCodeItem(QString str)
|
||||
{
|
||||
addItemFlag = false;
|
||||
m_LineEdit->setEnabled(true);
|
||||
m_TextEdit->clear();
|
||||
m_LineEdit->setText("");
|
||||
pPicScene->clearSelection();
|
||||
codeItem_Operation = new PicCodeItem(0, 0, SourceType::CODE);
|
||||
@@ -1163,22 +947,7 @@ void TestPrintWidget::on_delButton_pressed()
|
||||
foreach (QGraphicsItem *item, pPicScene->selectedItems()) {
|
||||
pPicScene->removeItem(item);
|
||||
delete item;
|
||||
// ui->saveButton->setEnabled(true);
|
||||
}
|
||||
|
||||
if(varReplaceItemMap.size()>0){
|
||||
QMap<int, ItemReplaceInfo> newMap;
|
||||
for (auto it = varReplaceItemMap.begin(); it != varReplaceItemMap.end(); ++it) {
|
||||
int oldKey = it.key();
|
||||
if (oldKey == index) {
|
||||
continue; // 跳过删除项
|
||||
}
|
||||
int newKey = (oldKey > index) ? oldKey - 1 : oldKey;
|
||||
newMap.insert(newKey, it.value());
|
||||
}
|
||||
varReplaceItemMap = newMap;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
bool TestPrintWidget::eventFilter(QObject *watched, QEvent *event) {
|
||||
@@ -1246,9 +1015,6 @@ void TestPrintWidget::onBtnItemConfigClicked()
|
||||
// 如果是日期类型,则唤醒DateVarSet
|
||||
if(item->data(0).toString() == "datetime") {
|
||||
// @see TestPrintWidget::addDateItem
|
||||
vartypeR = 0x00;
|
||||
replaceValueMap.clear();
|
||||
m_TextEdit->clear();
|
||||
emit sendButtonClickedSignal(16);
|
||||
return;
|
||||
}
|
||||
@@ -1290,8 +1056,9 @@ void TestPrintWidget::onBtnItemConfigClicked()
|
||||
|
||||
void TestPrintWidget::onItemEditorAccepted()
|
||||
{
|
||||
if(itemEditor->currentItem()->source() == SourceType::UNKNOWN)
|
||||
onEditItemCounterDone();
|
||||
if(itemEditor->currentItem()->source() == SourceType::UNKNOWN) {
|
||||
// Nothing....
|
||||
}
|
||||
else {
|
||||
PicTextItem* textItem = itemEditor->currentItem();
|
||||
textItem->applyModify();
|
||||
@@ -1310,7 +1077,9 @@ void TestPrintWidget::on_newfileButton_pressed(){
|
||||
pPicScene->clear();
|
||||
pViewer->viewport()->update();
|
||||
xmlfileName = "";
|
||||
QFile file(xmlfileName);
|
||||
|
||||
// TODO:: 新建文件的入口
|
||||
|
||||
sendButtonClickedSignal(21); //新建文件完成
|
||||
}
|
||||
|
||||
@@ -1347,27 +1116,6 @@ void TestPrintWidget::slt_BarCodeItemDone()
|
||||
item->setSelected(true);
|
||||
}
|
||||
|
||||
void TestPrintWidget::slt_QRCodeItemDone(QString str)
|
||||
{
|
||||
if (editCodeFlag) {
|
||||
on_delButton_pressed();
|
||||
editCodeFlag = false;
|
||||
}
|
||||
|
||||
addCodeItem(str);
|
||||
m_TextEdit->clear();
|
||||
|
||||
int index = checkSelectScene();
|
||||
if (index == -1) return;
|
||||
|
||||
QString html = m_TextEdit->toHtml();
|
||||
foreach (QGraphicsItem *item, pPicScene->selectedItems())
|
||||
{
|
||||
PicCodeItem *pItem = (PicCodeItem *)item;
|
||||
pItem->setHtml(html);
|
||||
}
|
||||
}
|
||||
|
||||
QGraphicsItem* findClosestItemToViewCenter(QGraphicsView* view)
|
||||
{
|
||||
if (!view || !view->scene())
|
||||
@@ -1506,29 +1254,6 @@ void TestPrintWidget::on_cbResolution_currentIndexChanged(int index)
|
||||
}
|
||||
}
|
||||
|
||||
void TestPrintWidget::setFontNameIndex(float fontsize)
|
||||
{
|
||||
int currIndex=0;
|
||||
|
||||
if(fontsize <=5 ){ //5dot -- 3.75pt
|
||||
currIndex = 0;
|
||||
}else if(fontsize<=7){ //7dot -- 5.25pt
|
||||
currIndex = 1;
|
||||
}else if(fontsize<=9){ //9dot -- 6.75
|
||||
currIndex = 2;
|
||||
}else if(fontsize<=12){ //12dot -- 9pt
|
||||
currIndex = 3;
|
||||
}else if(fontsize<=16){ //16dot -- 12pt
|
||||
currIndex = 4;
|
||||
}else if(fontsize<=24){ //24dot -- 18pt
|
||||
currIndex = 5;
|
||||
}else if(fontsize<=32){ //32dot -- 24pt
|
||||
currIndex = 6;
|
||||
}
|
||||
if(currIndex<ui.cbResolution->count())
|
||||
ui.cbResolution->setCurrentIndex(currIndex);
|
||||
}
|
||||
|
||||
void TestPrintWidget::addDateTimeItem(const DateItemModel &model, const TextItemModel& textModel)
|
||||
{
|
||||
// 如果当前选中了一个日期时间item,则直接设置模型
|
||||
@@ -1634,6 +1359,11 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer<QFont>
|
||||
}
|
||||
}
|
||||
|
||||
QString TestPrintWidget::currentFile()
|
||||
{
|
||||
return xmlfileName;
|
||||
}
|
||||
|
||||
void TestPrintWidget::showBarcodeEditor(bool restoreViewModel)
|
||||
{
|
||||
#if defined(ARCH_AARCH64)
|
||||
|
||||
Reference in New Issue
Block a user