优化图头的拷贝粘贴

This commit is contained in:
jiayulong 2026-06-23 17:35:31 +08:00
parent 34adb5ebd7
commit 25f6ba87c2
3 changed files with 34 additions and 14 deletions

View File

@ -203,6 +203,15 @@ void FormHead::Init(int iRows, int iCols)
connect(CallManage::getInstance(), SIGNAL(sig_UnSelectTableItem(QString)), this, SLOT(s_UnSelectTableItem(QString)));
connect(ui->tableWidget, SIGNAL(cellChanged(int, int)), this, SLOT(slotCellChanged(int, int)));
connect(ui->tableWidget, SIGNAL(currentCellChanged(int, int, int, int)), this, SLOT(slotCurrentCellChanged(int, int, int, int)));
//鼠标点击表格
connect(ui->tableWidget, SIGNAL(cellClicked(int, int)), this, SLOT(slotCellClicked(int, int)));
}
void FormHead::slotCellClicked(int row, int column)
{
//取消其他表格的选中状态(图头、成果表)
emit CallManage::getInstance()->sig_UnSelectTableItem(m_indexID);
}
//更新
@ -1043,14 +1052,17 @@ void FormHead::keyPressEvent(QKeyEvent * event)
void FormHead::copy()
{
QMap<int, QList<int>> selMap;//行,列
QList<QTableWidgetItem*> list = ui->tableWidget->selectedItems();
if (list.count() <= 0)
return;
for (QTableWidgetItem* item : list)
QModelIndexList list = ui->tableWidget->selectionModel()->selectedIndexes();
if (list.size() < 1)
{
int rowN = ui->tableWidget->row(item);
int colN = ui->tableWidget->column(item);
selMap[rowN].append(colN);
QMessageBox::warning(this, "单元格拷贝", "请选中单元格", "确定");
return;
}
for(auto range:list)
{
int rowN = range.row();
int colN = range.column();
selMap[rowN].append(colN);
}
QString cpStr;
QMap<int, QList<int>>::iterator it = selMap.begin();
@ -1058,10 +1070,14 @@ void FormHead::copy()
{
for (int i = 0; i < (*it).count(); i++)
{
QTableWidgetItem* item = ui->tableWidget->item(it.key(), (*it).at(i));
if (item)
auto myWidget = ui->tableWidget->cellWidget(it.key(), (*it).at(i));
if(myWidget)
{
cpStr.append(item->text().trimmed());
FormTableItem* formTableItemTmp = (FormTableItem*)myWidget;//获得widget
if(formTableItemTmp)
{
cpStr.append(formTableItemTmp->m_strShowTxt.trimmed());
}
}
if (i != (*it).count() - 1)
cpStr.append("\t");
@ -1072,6 +1088,7 @@ void FormHead::copy()
cpStr.append("\n");
}
}
QApplication::clipboard()->setText(cpStr);
}
@ -1100,9 +1117,6 @@ void FormHead::Paste()
bImg=true;
//1.直接采用控件显示
FormTableItem* formTableItem = new FormTableItem;
formTableItem->m_pixmap = pixmap;
ui->tableWidget->setCellWidget(rowN, colN, formTableItem);
// 保存为PNG文件
QString strImg = QDateTime::currentDateTime().toString("yyyyMMdd-hhmmsszzz");
@ -1128,9 +1142,11 @@ void FormHead::Paste()
return;
}
formTableItemTmp->m_pixmap = pixmap;
formTableItemTmp->m_strImg = folderPath; // 图片路径
formTableItemTmp->m_colWidth_Img = pixmap.width()/g_dPixelPerCm; //图例宽
formTableItemTmp->m_rowHeight_Img = pixmap.height()/g_dPixelPerCm; //图例高
formTableItemTmp->update();
//
PropertyService()->initHeadProperty(this, ui->tableWidget, formTableItemTmp, rowN, colN);
@ -1178,12 +1194,14 @@ void FormHead::Paste()
else
{
FormTableItem* formTableItem = new FormTableItem;
formTableItem->m_strShowTxt = rowDataList.at(j);
ui->tableWidget->setCellWidget(x, y, formTableItem);
}
}
else
{
FormTableItem* formTableItem = new FormTableItem;
formTableItem->m_strShowTxt = rowDataList.at(j);
ui->tableWidget->setCellWidget(x, y, formTableItem);
}
}

View File

@ -59,6 +59,8 @@ public slots:
//cell
void slotCellChanged(int row, int column);
void slotCurrentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn);
//鼠标点击表格
void slotCellClicked(int row, int column);
//图头、成果表
//取消其他表格的选中状态

View File

@ -73,7 +73,7 @@ FormMultiHeads::~FormMultiHeads()
void FormMultiHeads::slotCellClicked(int row, int column)
{
qDebug() << "FormMultiHeads slotCellClicked";
//qDebug() << "FormMultiHeads slotCellClicked";
//取消其他表格的选中状态(图头、成果表)
emit CallManage::getInstance()->sig_UnSelectTableItem("");