diff --git a/logPlus/PropertyWidget.cpp b/logPlus/PropertyWidget.cpp index 3ffe682..b3e10c4 100644 --- a/logPlus/PropertyWidget.cpp +++ b/logPlus/PropertyWidget.cpp @@ -467,7 +467,7 @@ void PropertyWidget::SlotPropertyChanged( QtProperty *pProperty, const QVariant { double newWidth = variant.value(); 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(); 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(); + 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(); + 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) diff --git a/logPlus/PropertyWidget.h b/logPlus/PropertyWidget.h index 2809d5e..303e603 100644 --- a/logPlus/PropertyWidget.h +++ b/logPlus/PropertyWidget.h @@ -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; diff --git a/logPlus/formhead.cpp b/logPlus/formhead.cpp index 1cc3d9d..327f20c 100644 --- a/logPlus/formhead.cpp +++ b/logPlus/formhead.cpp @@ -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; itableWidget->columnCount(); i++) + { + tempWidth += ui->tableWidget->columnWidth(i); + tempWidth += 1; + } + // + for(int j=0; jtableWidget->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); //--------------------------- diff --git a/logPlus/formhead.h b/logPlus/formhead.h index 1f412ea..2b69844 100644 --- a/logPlus/formhead.h +++ b/logPlus/formhead.h @@ -3,6 +3,7 @@ #include #include +#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); diff --git a/logPlus/formmultiheads.cpp b/logPlus/formmultiheads.cpp index d21f587..cc2d959 100644 --- a/logPlus/formmultiheads.cpp +++ b/logPlus/formmultiheads.cpp @@ -5,6 +5,7 @@ #include #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(iWidthtableWidget->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; itableWidget->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; itableWidget->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(iWidthtableWidget->setColumnWidth(0, tempWidth+8); + } + } + } + } + } + } } diff --git a/logPlus/formmultiheads.h b/logPlus/formmultiheads.h index 904f2f5..8a75374 100644 --- a/logPlus/formmultiheads.h +++ b/logPlus/formmultiheads.h @@ -24,6 +24,9 @@ public slots: void slotContextMenu(QPoint pos); +public: + void resizeItem(QString indexID, double tempWidth, double tempHight); + }; #endif // FORMMULTIHEADS_H diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index a31fa70..fb35c39 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -8,7 +8,6 @@ #include #include #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(iWidthtableWidget->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; itableWidget->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 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() 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 selectRanges = ui->tableWidget->selectedRanges(); -// if (selectRanges.size() < 2) -// { -// QMessageBox::warning(this, "拆分表格失败", "单元格已是最小单位,不能再进行拆分", "确定"); -// return; -// } -// QList 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(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> selMap;//行,列 -// QList 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>::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 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 = ""; diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index e587a47..6b3e654 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -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