图头支持拷贝图片粘贴到表格

This commit is contained in:
jiayulong 2025-11-13 18:13:40 +08:00
parent c380f9006f
commit ca21b8fda8
5 changed files with 90 additions and 14 deletions

View File

@ -403,8 +403,9 @@ void PropertyWidget::ChangHeadItemProperty()
label->setPixmap(*pixmap);
label->setAlignment(Qt::AlignHCenter);
label->show();
//
m_formHead->m_bRefresh=false;
m_tableWidget->setCellWidget(m_iRow, m_iCol,label);
m_tableWidget->setCellWidget(m_iRow, m_iCol, label);
//m_item->setIcon(QIcon(*pixmap));
// 设置背景刷
@ -414,7 +415,17 @@ void PropertyWidget::ChangHeadItemProperty()
}
else if(strLast.toLower()==".png")
{
// 加载图片
QPixmap pixmap(imagePath);
//pixmap.scaled(colWidth-1, rowHeight-1, Qt::KeepAspectRatio, Qt::SmoothTransformation);//缩放
//1.直接采用控件显示
QLabel* label = new QLabel;
label->setPixmap(pixmap.scaled(colWidth-1, rowHeight-1, Qt::KeepAspectRatio, Qt::SmoothTransformation));//pixmap
label->setAlignment(Qt::AlignHCenter);
label->show();
//
m_formHead->m_bRefresh=false;
m_tableWidget->setCellWidget(m_iRow, m_iCol, label);
}
}
}

View File

@ -8,12 +8,16 @@
#include <QTimer>
#include <QSvgRenderer>
#include <QLabel>
#include <QDateTime>
#include "backgrounddelegate.h"
#include "PropertyWidget.h"
#include "geometryutils.h"
//extern int g_iRows;
//extern int g_iCols;
extern QString g_prjname;
int g_iFixedWidth=40;
int g_iFixedHeight=30;
@ -156,7 +160,7 @@ void FormHead::Init(int iRows, int iCols)
QSvgRenderer* svgRender = new QSvgRenderer();
svgRender->load(imagePath);
//
QPixmap* pixmap = new QPixmap(colWidth, rowHeight);
QPixmap* pixmap = new QPixmap(colWidth-1, rowHeight-1);
pixmap->fill(Qt::transparent);//设置背景透明
QPainter p(pixmap);
svgRender->render(&p);
@ -169,7 +173,15 @@ void FormHead::Init(int iRows, int iCols)
}
else if(strLast.toLower()==".png")
{
// 加载图片
QPixmap pixmap(imagePath);
//pixmap.scaled(colWidth-1, rowHeight-1, Qt::KeepAspectRatio, Qt::SmoothTransformation);//缩放
//1.直接采用控件显示
QLabel* label = new QLabel;
label->setPixmap(pixmap.scaled(colWidth-1, rowHeight-1, Qt::KeepAspectRatio, Qt::SmoothTransformation));
label->setAlignment(Qt::AlignHCenter);
label->show();
ui->tableWidget->setCellWidget(i, j,label);
}
}
}
@ -393,16 +405,6 @@ void FormHead::copy()
void FormHead::Paste()
{
QString pastText = QApplication::clipboard()->text();
QStringList rowList = pastText.split("\n", QString::KeepEmptyParts);
if(rowList.size()==0)
{
return;
}
if(rowList.at(rowList.size()-1)=="")
{
rowList.removeAt(rowList.size()-1);
}
QTableWidgetItem* crtItem = ui->tableWidget->currentItem();
int rowN, colN;
if (!crtItem)
@ -415,6 +417,61 @@ void FormHead::Paste()
rowN = ui->tableWidget->row(crtItem);
colN = ui->tableWidget->column(crtItem);
}
bool bImg=false;
QPixmap pixmap = QApplication::clipboard()->pixmap();
if(pixmap.isNull())
{
}
else
{
bImg=true;
//1.直接采用控件显示
QLabel* label = new QLabel;
label->setPixmap(pixmap);
label->setAlignment(Qt::AlignHCenter);
label->show();
ui->tableWidget->setCellWidget(rowN, colN, label);
// 保存为PNG文件
QString strImg = QDateTime::currentDateTime().toString("yyyyMMdd-hhmmsszzz");
//Logdata
QString folderPath;
folderPath = GetLogdataPath();
folderPath = folderPath + g_prjname;
folderPath = folderPath + "/" + strImg + ".png";
pixmap.save(folderPath, "PNG");
//
QTableWidgetItem* item = ui->tableWidget->item(rowN, colN);
// 将图片路径存储在Qt::UserRole+1角色中
item->setData(Qt::UserRole+1, folderPath); // 图片路径
item->setData(Qt::UserRole+2, pixmap.width()/g_dPixelPerCm); //图例宽
item->setData(Qt::UserRole+3, pixmap.height()/g_dPixelPerCm); //图例高
PropertyService()->initHeadProperty(this, ui->tableWidget, item, rowN, colN);
return;
}
QString pastText = QApplication::clipboard()->text();
QStringList rowList = pastText.split("\n", QString::KeepEmptyParts);
if(rowList.size()==0)
{
if(pixmap.isNull())
{
return;
}
else
{
bImg=true;
}
}
if(rowList.at(rowList.size()-1)=="")
{
rowList.removeAt(rowList.size()-1);
}
for (int i = 0; i < (ui->tableWidget->rowCount() - rowN) && (i < rowList.length()); i++)
{
QStringList rowDataList = rowList.at(i).split("\t", QString::KeepEmptyParts);

View File

@ -3,6 +3,8 @@
#include <QDebug>
#include "CallManage.h"
extern int g_iOneWidth; //道宽
//曲线名称栏(表格)
FormTrack::FormTrack(QWidget *parent, QString strWellName, QString strTrackName) :
QWidget(parent),
@ -82,6 +84,10 @@ void FormTrack::s_addLine(QString strSlfName, QString strWellName, QString strTr
int row = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(row + 1);
//避免出现小滚动条
//ui->tableWidget->resize(g_iOneWidth, 100*(row + 1)+10);
//this->resize(g_iOneWidth, 100*(row + 1)+30);
//曲线信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;

View File

@ -22,6 +22,7 @@ FormWell::FormWell(QWidget *parent, QString strWellName) :
//ui->tableWidget->horizontalHeader()->hide();//列
int rowcount = 3; //总行数
ui->tableWidget->setRowCount(rowcount); //动态设置行数
//ui->tableWidget->verticalHeader()->setFixedWidth(3);//标题栏宽度
ui->tableWidget->horizontalHeader()->setFixedHeight(3);
//关联信号槽

View File

@ -86,6 +86,7 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
//ui->tableWidget_2->horizontalHeader()->hide();//列
int rowcount = 2; //总行数
ui->tableWidget_2->setRowCount(rowcount); //动态设置行数
//ui->tableWidget_2->verticalHeader()->setFixedWidth(3);//标题栏宽度
ui->tableWidget_2->horizontalHeader()->setFixedHeight(3);//标题栏高度
//我们让一列也可以滑动
ui->tableWidget_2->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);