This commit is contained in:
DESKTOP-450PEFP\mainc 2026-02-04 15:34:37 +08:00
commit 1239785258
8 changed files with 156 additions and 469 deletions

View File

@ -467,7 +467,7 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
{
double newWidth = variant.value<double>();
m_item->setData(Qt::UserRole+2, newWidth); // 图片路径
m_colWidth = newWidth;
m_colWidth_Img = newWidth;
//图头项改变
ChangHeadItemProperty();
}
@ -480,11 +480,41 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant
{
double newHight = variant.value<double>();
m_item->setData(Qt::UserRole+3, newHight); // 图片路径
m_rowHeight = newHight;
m_rowHeight_Img = newHight;
//图头项改变
ChangHeadItemProperty();
}
}
else if("列宽(cm)" == m_propertyData[pProperty])
{
//qDebug() << "列宽(cm)->改变";
//当前属性类型
if(m_strCurrentProperty == Head_Property)
{
double newWidth = variant.value<double>();
m_colWidth = newWidth;
m_formHead->m_bRefresh=false;
//图头项改变
m_tableWidget->setColumnWidth(m_iCol, m_colWidth*g_dPixelPerCm);
m_tableWidget->update();
m_formHead->resizeWindow();
}
}
else if("行高(cm)" == m_propertyData[pProperty])
{
//qDebug() << "行高(cm)->改变";
//当前属性类型
if(m_strCurrentProperty == Head_Property)
{
double newHight = variant.value<double>();
m_rowHeight = newHight;
m_formHead->m_bRefresh=false;
//图头项改变
m_tableWidget->setRowHeight(m_iRow, m_rowHeight*g_dPixelPerCm);
m_tableWidget->update();
m_formHead->resizeWindow();
}
}
else if("内容" == m_propertyData[pProperty])
{
//qDebug() << "内容->改变";
@ -587,8 +617,8 @@ void PropertyWidget::ChangHeadItemProperty()
{
if(imagePath.size()>4)
{
int colWidth = m_colWidth*g_dPixelPerCm;
int rowHeight = m_rowHeight*g_dPixelPerCm;
int colWidth = m_colWidth_Img*g_dPixelPerCm;
int rowHeight = m_rowHeight_Img*g_dPixelPerCm;
//
QString strLast = imagePath.right(4);
if(strLast.toLower()==".svg")
@ -623,7 +653,7 @@ void PropertyWidget::ChangHeadItemProperty()
//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->setPixmap(pixmap.scaled(colWidth-1, rowHeight-1, Qt::KeepAspectRatio, Qt::SmoothTransformation));//图片保持比例缩放
label->setAlignment(Qt::AlignHCenter);
label->show();
//
@ -1054,31 +1084,37 @@ void PropertyWidget::initHeadProperty(FormHead *formHead, QTableWidget *tableWid
listDirection.append("水平");
listDirection.append("垂直");
QString imagePath = "";//"./image/胜利符号库/解释结论符号/油层.svg"
QString imagePath = ""; //"./image/胜利符号库/解释结论符号/油层.svg"
QVariant bgData = m_item->data(Qt::UserRole+1); // 我们约定用这个角色存储图片路径
if (bgData.isValid()) {
imagePath = bgData.toString();
}
//图例宽
QVariant colWidthData = m_item->data(Qt::UserRole+2);
if (colWidthData.isValid()) {
m_colWidth = colWidthData.toDouble();
QVariant colWidth_Img = m_item->data(Qt::UserRole+2);
if (colWidth_Img.isValid()) {
m_colWidth_Img = colWidth_Img.toDouble();
}
//图例高
QVariant rowHeightData = m_item->data(Qt::UserRole+3);
if (rowHeightData.isValid()) {
m_rowHeight = rowHeightData.toDouble();
QVariant rowHeight_Img = m_item->data(Qt::UserRole+3);
if (rowHeight_Img.isValid()) {
m_rowHeight_Img = rowHeight_Img.toDouble();
}
m_colWidth = tableWidget->columnWidth(col)/g_dPixelPerCm;
m_rowHeight = tableWidget->rowHeight(row)/g_dPixelPerCm;
_CreateVariantPropertyItem("单元格", "图例", imagePath, VariantManager::filePathTypeId()); //"./image/胜利符号库/岩性符号/砂岩.png"
_CreateVariantPropertyItem("单元格", "图例宽(cm)", m_colWidth, QVariant::Double, 0, 100);
_CreateVariantPropertyItem("单元格", "图例高(cm)", m_rowHeight, QVariant::Double, 0, 100);
_CreateVariantPropertyItem("单元格", "图例宽(cm)", m_colWidth_Img, QVariant::Double, 0, 100);
_CreateVariantPropertyItem("单元格", "图例高(cm)", m_rowHeight_Img, QVariant::Double, 0, 100);
_CreateVariantPropertyItem("文本", "内容", item->text(), QVariant::String);
_CreateVariantPropertyItem("文本", "字体", m_item->font(), QVariant::Font);
_CreateEnumPropertyItem("文本", "方向", 0, listDirection);
_CreateVariantPropertyItem("文本", "字体颜色", m_item->foreground().color(), QVariant::Color);
_CreateVariantPropertyItem("表格", "行高(cm)", m_rowHeight, QVariant::Double, 0, 100);
_CreateVariantPropertyItem("表格", "列宽(cm)", m_colWidth, QVariant::Double, 0, 100);
}
void PropertyWidget::initDepthProperty(FormInfo *formInfo)

View File

@ -72,11 +72,17 @@ public:
FormTrackTop* m_fromTop = NULL;
FormInfo * m_formInfo = NULL;
//图头
FormHead *m_formHead;
QTableWidget *m_tableWidget;
QTableWidgetItem* m_item;
int m_iRow;
int m_iCol;
//图头, 图例宽高
double m_colWidth_Img = 1;
double m_rowHeight_Img = 1;
//图头, 行高、列宽
double m_colWidth = 1;
double m_rowHeight = 1;

View File

@ -18,20 +18,22 @@
extern QString g_prjname;
int g_iFixedWidth=40;
int g_iFixedHeight=30;
//标题栏宽度、高度
int g_iFixedWidth=0;//40;
int g_iFixedHeight=0;//30;
int g_iColsWidth=100;
int g_iRowsHight=40;
extern double g_dPixelPerCm;//每厘米像素数
//画图头
FormHead::FormHead(QWidget *parent, int indexID) :
FormHead::FormHead(QWidget *parent, QString indexID) :
QWidget(parent),
ui(new Ui::FormHead)
{
ui->setupUi(this);
m_indexID =indexID;
m_parent = (FormMultiHeads *)parent;
//设置样式表,不显示竖直边框
ui->tableWidget->setStyleSheet( "QTableView::item {border-left: 0px solid black;} \
@ -39,19 +41,22 @@ FormHead::FormHead(QWidget *parent, int indexID) :
QTableView::item {border-right: 0px solid black;} \
QTableView::item:selected {border-right: 0px solid black;}");
//ui->tableWidget->setSizeAdjustPolicy(QTableWidget::AdjustToContents); //表格大小随内容改变,会占满
//
//ui->tableWidget->verticalHeader()->hide(); //行
//ui->tableWidget->horizontalHeader()->hide(); //列
ui->tableWidget->verticalHeader()->hide(); //行
ui->tableWidget->horizontalHeader()->hide(); //列
ui->tableWidget->verticalHeader()->setFixedWidth(g_iFixedWidth);//标题栏宽度
ui->tableWidget->horizontalHeader()->setFixedHeight(g_iFixedHeight);//标题栏高度
//ui->tableWidget->setColumnCount(1); //动态设置列数
//ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//最后一列铺满最后
//标题
// QTableWidgetItem *headerItem = new QTableWidgetItem("");
// ui->tableWidget->setHorizontalHeaderItem(0, headerItem);
//我们让一列也可以滑动
ui->tableWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
ui->tableWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
// ui->tableWidget->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel);
// ui->tableWidget->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);
// 设置右键菜单策略
ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);
// 在窗口构造函数中
@ -72,8 +77,21 @@ FormHead::~FormHead()
void FormHead::resizeWindow()
{
QRect rect = this->rect();
int tempWidth = m_iCols*g_iColsWidth+g_iFixedWidth+10;
int tempHight = m_iRows*g_iRowsHight+g_iFixedHeight+10;
int tempWidth = 0; //m_iCols*(g_iColsWidth+1)+g_iFixedWidth;
int tempHight = 0; //m_iRows*(g_iRowsHight+1)+g_iFixedHeight;
for(int i=0; i<ui->tableWidget->columnCount(); i++)
{
tempWidth += ui->tableWidget->columnWidth(i);
tempWidth += 1;
}
//
for(int j=0; j<ui->tableWidget->rowCount(); j++)
{
tempHight += ui->tableWidget->rowHeight(j);
tempHight += 1;
}
//调整大小
if(rect.width()>tempWidth)
{
@ -83,6 +101,8 @@ void FormHead::resizeWindow()
{
ui->tableWidget->setGeometry(0, 2, tempWidth, tempHight);
}
m_parent->resizeItem(m_indexID, tempWidth, tempHight);
}
void FormHead::resizeEvent(QResizeEvent *event)
@ -97,10 +117,10 @@ void FormHead::Init(int iRows, int iCols)
//清空
ui->tableWidget->clearContents();
//ui->tableWidget->verticalHeader()->hide();//隐藏左侧系统序号栏
//ui->tableWidget->horizontalHeader()->hide();//隐藏上方系统序号栏
//ui->tableWidget->verticalHeader()->setFixedWidth(3);//标题栏宽度
//ui->tableWidget->horizontalHeader()->setFixedHeight(3);//标题栏高度
ui->tableWidget->verticalHeader()->hide();//隐藏左侧系统序号栏
ui->tableWidget->horizontalHeader()->hide();//隐藏上方系统序号栏
ui->tableWidget->verticalHeader()->setFixedWidth(0);//标题栏宽度
ui->tableWidget->horizontalHeader()->setFixedHeight(0);//标题栏高度
//QRect rect = this->rect();
@ -131,13 +151,15 @@ void FormHead::Init(int iRows, int iCols)
//设置列宽
ui->tableWidget->setColumnWidth(j, g_iColsWidth);
double colWidth = g_iColsWidth-1;
double rowHeight = g_iRowsHight-1;
double colWidth = g_iColsWidth;
double rowHeight = g_iRowsHight;
QTableWidgetItem* item = new QTableWidgetItem("");//QString::number(i) + "-" + QString::number(j)
// 将图片路径存储在Qt::UserRole+1角色中
item->setData(Qt::UserRole+1, "./image/胜利符号库/解释结论符号/"); // 图片路径
item->setData(Qt::UserRole+2, colWidth/g_dPixelPerCm); //图例宽
item->setData(Qt::UserRole+3, rowHeight/g_dPixelPerCm); //图例高
item->setData(Qt::UserRole+1, ""); //图片路径 ./image/胜利符号库/解释结论符号/
item->setData(Qt::UserRole+2, 0); //图例宽
item->setData(Qt::UserRole+3, 0); //图例高
// item->setData(Qt::UserRole+4, colWidth/g_dPixelPerCm); //列宽
// item->setData(Qt::UserRole+5, rowHeight/g_dPixelPerCm); //行高
ui->tableWidget->setItem(i, j, item);
//---------------------------

View File

@ -3,6 +3,7 @@
#include <QWidget>
#include <QTableWidgetItem>
#include "formmultiheads.h"
#pragma execution_character_set("utf-8")
@ -15,7 +16,7 @@ class FormHead : public QWidget
Q_OBJECT
public:
explicit FormHead(QWidget *parent = nullptr, int indexID=0);
explicit FormHead(QWidget *parent = nullptr, QString indexID="");
~FormHead();
private:
@ -31,11 +32,12 @@ public:
void onPasteExcelData();
public:
int m_indexID;
QString m_indexID;
int m_iRows;
int m_iCols;
bool m_bRefresh=true;
FormMultiHeads *m_parent;
public:
void Init(int iRows, int iCols);

View File

@ -5,6 +5,7 @@
#include <QMenu>
#include "newheaddialog.h"
#include "formhead.h"
#include "qtcommonclass.h"
extern int g_iRows;
extern int g_iCols;
@ -29,10 +30,10 @@ FormMultiHeads::FormMultiHeads(QWidget *parent) :
QTableView::item {border-right: 0px solid black;} \
QTableView::item:selected {border-right: 0px solid black;}");
//
//ui->tableWidget->verticalHeader()->hide(); //行
//ui->tableWidget->horizontalHeader()->hide(); //列
ui->tableWidget->verticalHeader()->setFixedWidth(10);//标题栏宽度
ui->tableWidget->horizontalHeader()->setFixedHeight(10);//标题栏高度
ui->tableWidget->verticalHeader()->hide(); //行
ui->tableWidget->horizontalHeader()->hide(); //列
ui->tableWidget->verticalHeader()->setFixedWidth(0);//标题栏宽度
ui->tableWidget->horizontalHeader()->setFixedHeight(0);//标题栏高度
ui->tableWidget->setColumnCount(1); //动态设置列数
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);//最后一列铺满最后
//标题
@ -54,7 +55,9 @@ FormMultiHeads::~FormMultiHeads()
}
void FormMultiHeads::slotContextMenu(QPoint pos)
{
{
QtCommonClass *qtCommon = new QtCommonClass(this);
//
QMenu menu(ui->tableWidget);
QAction *newAction = menu.addAction("新建图头");
// 弹出菜单
@ -75,8 +78,8 @@ void FormMultiHeads::slotContextMenu(QPoint pos)
QTableWidgetItem *headerItem = new QTableWidgetItem("");
ui->tableWidget->setVerticalHeaderItem(rowcount, headerItem);
int tempWidth = g_iCols*g_iColsWidth+g_iFixedWidth+15;
int tempHight = g_iRows*g_iRowsHight+g_iFixedHeight+15;
int tempWidth = g_iCols*g_iColsWidth+g_iFixedWidth+8;
int tempHight = g_iRows*g_iRowsHight+g_iFixedHeight+8;
//设置行高度
ui->tableWidget->setRowHeight(rowcount, tempHight);
if(rowcount==0)
@ -87,14 +90,15 @@ void FormMultiHeads::slotContextMenu(QPoint pos)
else
{
int iWidth=ui->tableWidget->columnWidth(0);
if(iWidth<g_iCols*g_iColsWidth)//列宽变大
if(iWidth<g_iCols*g_iColsWidth)//列宽变大,以最大列宽为准
{
//设置列宽
ui->tableWidget->setColumnWidth(0, tempWidth);
}
}
//
FormHead *widgetHead = new FormHead(this, 1);
QString strUuid = qtCommon->getUUid();
FormHead *widgetHead = new FormHead(this, strUuid);
widgetHead->Init(g_iRows, g_iCols);
ui->tableWidget->setCellWidget(rowcount, 0, widgetHead);
}
@ -107,67 +111,37 @@ void FormMultiHeads::slotContextMenu(QPoint pos)
qDebug() << "other=";
}
}
// if(ui->tableWidget->rowCount()==0 && ui->tableWidget->rowCount()==0)
// {
// QMenu menu(ui->tableWidget);
// QAction *newAction = menu.addAction("新建图头");
// // 弹出菜单
// QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos));
// if (selectedAction == newAction) {
// NewHeadDialog *dlg = new NewHeadDialog(this);
// //
// dlg->setAttribute(Qt::WA_DeleteOnClose);//关闭时,自动删除窗口对象
// int result = dlg->exec();//模态对话框
// if (result == QDialog::Accepted) {
// // 处理用户点击了确定按钮的逻辑
// qDebug() << "Accepted=";
// //
// ui->tableWidget->clear();
// //
// ui->tableWidget->setColumnCount(g_iCols);
// ui->tableWidget->setRowCount(g_iRows); //动态设置行数
// for(int i=0; i<g_iRows; i++)
// {
// for(int j=0; j<g_iCols; j++)
// {
// QTableWidgetItem* item = new QTableWidgetItem("");
// ui->tableWidget->setItem(i, j, item);
// }
// }
// }
// else if (result == QDialog::Rejected) {
// // 处理用户点击了取消按钮的逻辑
// qDebug() << "Rejected=";
// }
// else {
// // 处理其他情况的逻辑
// qDebug() << "other=";
// }
// }
// }
// else
// {
// QMenu menu(ui->tableWidget);
// QAction *mergeAction = menu.addAction("合并表格");
// QAction *refreshAction = menu.addAction("拆分表格");
// QAction *deleteAction = menu.addAction("删除行");
// QAction *addAction = menu.addAction("添加行");
// // 弹出菜单
// QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos));
// if (selectedAction == mergeAction) {
// qDebug() << "合并表格";
// slotMerge();
// } else if (selectedAction == deleteAction) {
// //删除1行
// int row = ui->tableWidget->currentRow();
// ui->tableWidget->removeRow(row);
// } else if (selectedAction == refreshAction) {
// qDebug() << "拆分表格";
// slotSplit();
// }
// }
}
void FormMultiHeads::resizeItem(QString indexID, double tempWidth, double tempHight)
{
//
int rowCount = ui->tableWidget->rowCount();//总行数
for(int i=0; i<rowCount; i++)
{
if( ui->tableWidget->cellWidget(i, 0) != nullptr )
{
auto myWidget = ui->tableWidget->cellWidget(i, 0);
if(myWidget)
{
//
FormHead *widgetHead = (FormHead*)myWidget;//获得widget
if(widgetHead)
{
if(widgetHead->m_indexID == indexID)
{
//设置行高度
ui->tableWidget->setRowHeight(i, tempHight+8);
int iWidth=ui->tableWidget->columnWidth(0);
if(iWidth<tempWidth+8)//列宽变大,以最大列宽为准
{
//设置列宽
ui->tableWidget->setColumnWidth(0, tempWidth+8);
}
}
}
}
}
}
}

View File

@ -24,6 +24,9 @@ public slots:
void slotContextMenu(QPoint pos);
public:
void resizeItem(QString indexID, double tempWidth, double tempHight);
};
#endif // FORMMULTIHEADS_H

View File

@ -8,7 +8,6 @@
#include <QFuture>
#include <QtConcurrent/QtConcurrent>
#include "newheaddialog.h"
#include "formhead.h"
//#include "qmytablewidget.h"
#include "PropertyWidget.h"
#include "LogModuleParamers.h"
@ -23,10 +22,11 @@ extern QString g_prjname;
extern double g_dPixelPerCm;//每厘米像素数
extern int g_iShow; //显示刻度
extern int g_iRows;
extern int g_iCols;
extern int g_iColsWidth;
extern int g_iRowsHight;
//图头
//extern int g_iRows;
//extern int g_iCols;
//extern int g_iColsWidth;
//extern int g_iRowsHight;
MainWindowCurve::MainWindowCurve(QWidget *parent) :
QMainWindow(parent),
@ -3286,352 +3286,6 @@ void MainWindowCurve::dropEvent(QDropEvent* event)
//QApplication::restoreOverrideCursor();
}
void MainWindowCurve::slotContextMenu(QPoint pos)
{
// QMenu menu(ui->tableWidget);
// QAction *newAction = menu.addAction("新建图头");
// // 弹出菜单
// QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos));
// if (selectedAction == newAction) {
// NewHeadDialog *dlg = new NewHeadDialog(this);
// //
// dlg->setAttribute(Qt::WA_DeleteOnClose);//关闭时,自动删除窗口对象
// int result = dlg->exec();//模态对话框
// if (result == QDialog::Accepted) {
// // 处理用户点击了确定按钮的逻辑
// qDebug() << "Accepted=";
// int rowcount = ui->tableWidget->rowCount(); //总行数
// //增加1行
// ui->tableWidget->setRowCount(rowcount+1);
// //行标题
// QTableWidgetItem *headerItem = new QTableWidgetItem("");
// ui->tableWidget->setVerticalHeaderItem(rowcount, headerItem);
// int iWidth=0;
// //设置行高度
// ui->tableWidget->setRowHeight(rowcount, g_iRows*(g_iRowsHight+2)+1);
// if(rowcount==0)
// {
// iWidth=g_iCols*g_iColsWidth;
// //设置列宽
// ui->tableWidget->setColumnWidth(0, g_iCols*(g_iColsWidth+1)+1);
// }
// else
// {
// iWidth=ui->tableWidget->columnWidth(0);
// if(iWidth<g_iCols*g_iColsWidth)//列宽变大
// {
// iWidth=g_iCols*g_iColsWidth;
// //设置列宽
// ui->tableWidget->setColumnWidth(0, g_iCols*(g_iColsWidth+1)+1);
// }
// }
// //
// FormHead *widgetHead = new FormHead(this, 1);
// widgetHead->Init(g_iRows, g_iCols, iWidth);
// ui->tableWidget->setCellWidget(rowcount, 0, widgetHead);
// }
// else if (result == QDialog::Rejected) {
// // 处理用户点击了取消按钮的逻辑
// qDebug() << "Rejected=";
// }
// else {
// // 处理其他情况的逻辑
// qDebug() << "other=";
// }
// }
// if(ui->tableWidget->rowCount()==0 && ui->tableWidget->rowCount()==0)
// {
// QMenu menu(ui->tableWidget);
// QAction *newAction = menu.addAction("新建图头");
// // 弹出菜单
// QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos));
// if (selectedAction == newAction) {
// NewHeadDialog *dlg = new NewHeadDialog(this);
// //
// dlg->setAttribute(Qt::WA_DeleteOnClose);//关闭时,自动删除窗口对象
// int result = dlg->exec();//模态对话框
// if (result == QDialog::Accepted) {
// // 处理用户点击了确定按钮的逻辑
// qDebug() << "Accepted=";
// //
// ui->tableWidget->clear();
// //
// ui->tableWidget->setColumnCount(g_iCols);
// ui->tableWidget->setRowCount(g_iRows); //动态设置行数
// for(int i=0; i<g_iRows; i++)
// {
// for(int j=0; j<g_iCols; j++)
// {
// QTableWidgetItem* item = new QTableWidgetItem("");
// ui->tableWidget->setItem(i, j, item);
// }
// }
// }
// else if (result == QDialog::Rejected) {
// // 处理用户点击了取消按钮的逻辑
// qDebug() << "Rejected=";
// }
// else {
// // 处理其他情况的逻辑
// qDebug() << "other=";
// }
// }
// }
// else
// {
// QMenu menu(ui->tableWidget);
// QAction *mergeAction = menu.addAction("合并表格");
// QAction *refreshAction = menu.addAction("拆分表格");
// QAction *deleteAction = menu.addAction("删除行");
// QAction *addAction = menu.addAction("添加行");
// // 弹出菜单
// QAction *selectedAction = menu.exec(ui->tableWidget->mapToGlobal(pos));
// if (selectedAction == mergeAction) {
// qDebug() << "合并表格";
// slotMerge();
// } else if (selectedAction == deleteAction) {
// //删除1行
// int row = ui->tableWidget->currentRow();
// ui->tableWidget->removeRow(row);
// } else if (selectedAction == refreshAction) {
// qDebug() << "拆分表格";
// slotSplit();
// }
// }
}
//合并
void MainWindowCurve::slotMerge()
{
// QModelIndexList list = ui->tableWidget->selectionModel()->selectedIndexes();
// if (list.size() < 2)
// {
// QMessageBox::warning(this, "单元格合并", "所选中单元格中为单个单元格,无法合并", "确定");
// return;
// }
// int topRow = 0;
// int leftCol = 0;
// int bottomRow = 0;
// int rightCol = 0;
// QList<QTableWidgetSelectionRange> selectRanges = ui->tableWidget->selectedRanges();
// if (selectRanges.size() > 0)
// {
// topRow = selectRanges[0].topRow();
// leftCol = selectRanges[0].leftColumn();
// bottomRow = selectRanges[0].bottomRow();
// rightCol = selectRanges[0].rightColumn();
// }
// for(auto range:selectRanges)
// {
// if(range.topRow()<topRow)
// topRow=range.topRow();
// if(range.leftColumn()<leftCol)
// leftCol=range.leftColumn();
// if(range.bottomRow()> bottomRow)
// bottomRow=range.bottomRow();
// if(range.rightColumn()>rightCol)
// rightCol=range.rightColumn();
// }
// int rowSpan = (bottomRow - topRow) + 1;
// int colSpan = (rightCol - leftCol) + 1;
// ui->tableWidget->setSpan(topRow, leftCol, rowSpan, colSpan);
}
//拆分
void MainWindowCurve::slotSplit()
{
// int row,col;
// QList<QTableWidgetSelectionRange> selectRanges = ui->tableWidget->selectedRanges();
// if (selectRanges.size() < 2)
// {
// QMessageBox::warning(this, "拆分表格失败", "单元格已是最小单位,不能再进行拆分", "确定");
// return;
// }
// QList<QTableWidgetItem*> selectItems = ui->tableWidget->selectedItems();
// if(selectItems.size()==0)
// {
// QMessageBox::warning(this, "拆分表格失败", "请先为表格设置元素item", "确定");
// return;
// }
// if(selectItems.size()>1)
// {
// QMessageBox::warning(this, "拆分表格失败", "非法选择", "确定");
// return;
// }
// for(auto item:selectItems)
// {
// row= item->row();
// col=item->column();
// }
// ui->tableWidget->setSpan(row, col, 1, 1); // 设置跨度为1
}
bool MainWindowCurve::eventFilter(QObject* obj, QEvent* event)
{
// if (obj == ui->tableWidget && event->type() == QEvent::KeyPress) {
// QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
// if (keyEvent->matches(QKeySequence::Paste)) {
// onPasteExcelData();
// return true;
// }
// }
return QMainWindow::eventFilter(obj, event);
}
//复制粘贴事件
void MainWindowCurve::keyPressEvent(QKeyEvent * event)
{
// //excel 行分是 "\n" ; 列分是 "\t"
// if (event->matches(QKeySequence::Copy))
// {
// copy();
// }
// else if (event->matches(QKeySequence::Paste))
// {
// Paste();
// }
// else if (event->matches(QKeySequence::SelectAll))
// {
// ui->tableWidget->selectAll();
// }
// else
// {
// QWidget::keyPressEvent(event);
// }
}
void MainWindowCurve::copy()
{
// QMap<int, QList<int>> selMap;//行,列
// QList<QTableWidgetItem*> list = ui->tableWidget->selectedItems();
// if (list.count() <= 0)
// return;
// for (QTableWidgetItem* item : list)
// {
// int rowN = ui->tableWidget->row(item);
// int colN = ui->tableWidget->column(item);
// selMap[rowN].append(colN);
// }
// QString cpStr;
// QMap<int, QList<int>>::iterator it = selMap.begin();
// while (it != selMap.end())
// {
// for (int i = 0; i < (*it).count(); i++)
// {
// QTableWidgetItem* item = ui->tableWidget->item(it.key(), (*it).at(i));
// if (item)
// {
// cpStr.append(item->text().trimmed());
// }
// if (i != (*it).count() - 1)
// cpStr.append("\t");
// }
// it++;
// if (it != selMap.end())
// {
// cpStr.append("\n");
// }
// }
// QApplication::clipboard()->setText(cpStr);
}
void MainWindowCurve::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)
// {
// rowN = ui->tableWidget->currentRow();
// colN = ui->tableWidget->currentColumn();
// }
// else
// {
// rowN = ui->tableWidget->row(crtItem);
// colN = ui->tableWidget->column(crtItem);
// }
// for (int i = 0; i < (ui->tableWidget->rowCount() - rowN) && (i < rowList.length()); i++)
// {
// QStringList rowDataList = rowList.at(i).split("\t", QString::KeepEmptyParts);
// for (int j = 0; j < (ui->tableWidget->columnCount() - colN) && (j < rowDataList.length()); j++)
// {
// int x = i + rowN;
// int y = j + colN;
// QTableWidgetItem* item = ui->tableWidget->item(x, y);
// if (item)
// {
// item->setText(rowDataList.at(j));
// }
// else
// {
// ui->tableWidget->setItem(x, y, new QTableWidgetItem(rowDataList.at(j)));
// }
// }
// }
}
void MainWindowCurve::onPasteExcelData()
{
// QClipboard* clipboard = QApplication::clipboard();
// const QString clipData = clipboard->text();
// if (clipData.isEmpty()) return;
// QList<QStringList> rowsData;
// const QStringList rows = clipData.split('\n', QString::SkipEmptyParts);
// for (const QString row:rows) {
// rowsData << row.split('\t', QString::SkipEmptyParts);
// }
// QTableWidget* table = ui->tableWidget;
// const QModelIndex currentIndex = table->currentIndex();
// const int startRow = currentIndex.isValid() ? currentIndex.row() : 0;
// const int startCol = currentIndex.isValid() ? currentIndex.column() : 0;
// table->setUpdatesEnabled(false);
// table->setRowCount(std::max(table->rowCount(), startRow + rowsData.size()));
// table->setColumnCount(std::max(table->columnCount(), startCol + rowsData[0].size()));
// for (int i = 0; i < rowsData.size(); ++i) {
// for (int j = 0; j < rowsData[i].size(); ++j) {
// if (startRow + i >= table->rowCount()) break;
// if (startCol + j >= table->columnCount()) break;
// QTableWidgetItem* item = table->item(startRow + i, startCol + j);
// if (!item) {
// item = new QTableWidgetItem();
// table->setItem(startRow + i, startCol + j, item);
// }
// item->setText(rowsData[i][j]);
// }
// }
// table->setUpdatesEnabled(true);
}
void MainWindowCurve::Open(QString fileFull)
{
QString strPrjname = "";

View File

@ -38,21 +38,15 @@ private:
Ui::MainWindowCurve *ui;
protected:
//支持复制粘贴,暂时还未实现
void keyPressEvent(QKeyEvent * e);
public:
//图头
bool eventFilter(QObject* obj, QEvent* event);
void onPasteExcelData();
public slots:
void dragEnterEvent(QDragEnterEvent* event);
void dragMoveEvent(QDragMoveEvent* event);
void dropEvent(QDropEvent* event);
//图头
void copy();
void Paste();
//鼠标滚动,通知可视解释窗口
void s_mouseWheel(QWheelEvent *event);
@ -235,10 +229,6 @@ public slots:
void s_ModuleOpen(); //处理算法
//void s_Open(QString fileFull);//打开
//图头右键菜单响应函数
void slotContextMenu(QPoint pos);
void slotMerge();//合并
void slotSplit();//拆分
};
#endif // MAINWINDOWCURVE_H