优化图头的拷贝粘贴

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(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(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(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() void FormHead::copy()
{ {
QMap<int, QList<int>> selMap;//行,列 QMap<int, QList<int>> selMap;//行,列
QList<QTableWidgetItem*> list = ui->tableWidget->selectedItems(); QModelIndexList list = ui->tableWidget->selectionModel()->selectedIndexes();
if (list.count() <= 0) if (list.size() < 1)
return;
for (QTableWidgetItem* item : list)
{ {
int rowN = ui->tableWidget->row(item); QMessageBox::warning(this, "单元格拷贝", "请选中单元格", "确定");
int colN = ui->tableWidget->column(item); return;
selMap[rowN].append(colN); }
for(auto range:list)
{
int rowN = range.row();
int colN = range.column();
selMap[rowN].append(colN);
} }
QString cpStr; QString cpStr;
QMap<int, QList<int>>::iterator it = selMap.begin(); QMap<int, QList<int>>::iterator it = selMap.begin();
@ -1058,10 +1070,14 @@ void FormHead::copy()
{ {
for (int i = 0; i < (*it).count(); i++) for (int i = 0; i < (*it).count(); i++)
{ {
QTableWidgetItem* item = ui->tableWidget->item(it.key(), (*it).at(i)); auto myWidget = ui->tableWidget->cellWidget(it.key(), (*it).at(i));
if (item) 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) if (i != (*it).count() - 1)
cpStr.append("\t"); cpStr.append("\t");
@ -1072,6 +1088,7 @@ void FormHead::copy()
cpStr.append("\n"); cpStr.append("\n");
} }
} }
QApplication::clipboard()->setText(cpStr); QApplication::clipboard()->setText(cpStr);
} }
@ -1100,9 +1117,6 @@ void FormHead::Paste()
bImg=true; bImg=true;
//1.直接采用控件显示 //1.直接采用控件显示
FormTableItem* formTableItem = new FormTableItem;
formTableItem->m_pixmap = pixmap;
ui->tableWidget->setCellWidget(rowN, colN, formTableItem);
// 保存为PNG文件 // 保存为PNG文件
QString strImg = QDateTime::currentDateTime().toString("yyyyMMdd-hhmmsszzz"); QString strImg = QDateTime::currentDateTime().toString("yyyyMMdd-hhmmsszzz");
@ -1128,9 +1142,11 @@ void FormHead::Paste()
return; return;
} }
formTableItemTmp->m_pixmap = pixmap;
formTableItemTmp->m_strImg = folderPath; // 图片路径 formTableItemTmp->m_strImg = folderPath; // 图片路径
formTableItemTmp->m_colWidth_Img = pixmap.width()/g_dPixelPerCm; //图例宽 formTableItemTmp->m_colWidth_Img = pixmap.width()/g_dPixelPerCm; //图例宽
formTableItemTmp->m_rowHeight_Img = pixmap.height()/g_dPixelPerCm; //图例高 formTableItemTmp->m_rowHeight_Img = pixmap.height()/g_dPixelPerCm; //图例高
formTableItemTmp->update();
// //
PropertyService()->initHeadProperty(this, ui->tableWidget, formTableItemTmp, rowN, colN); PropertyService()->initHeadProperty(this, ui->tableWidget, formTableItemTmp, rowN, colN);
@ -1178,12 +1194,14 @@ void FormHead::Paste()
else else
{ {
FormTableItem* formTableItem = new FormTableItem; FormTableItem* formTableItem = new FormTableItem;
formTableItem->m_strShowTxt = rowDataList.at(j);
ui->tableWidget->setCellWidget(x, y, formTableItem); ui->tableWidget->setCellWidget(x, y, formTableItem);
} }
} }
else else
{ {
FormTableItem* formTableItem = new FormTableItem; FormTableItem* formTableItem = new FormTableItem;
formTableItem->m_strShowTxt = rowDataList.at(j);
ui->tableWidget->setCellWidget(x, y, formTableItem); ui->tableWidget->setCellWidget(x, y, formTableItem);
} }
} }

View File

@ -59,6 +59,8 @@ public slots:
//cell //cell
void slotCellChanged(int row, int column); void slotCellChanged(int row, int column);
void slotCurrentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); 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) void FormMultiHeads::slotCellClicked(int row, int column)
{ {
qDebug() << "FormMultiHeads slotCellClicked"; //qDebug() << "FormMultiHeads slotCellClicked";
//取消其他表格的选中状态(图头、成果表) //取消其他表格的选中状态(图头、成果表)
emit CallManage::getInstance()->sig_UnSelectTableItem(""); emit CallManage::getInstance()->sig_UnSelectTableItem("");