添加复制,黏贴,删除

This commit is contained in:
zhaolei 2026-03-25 16:36:46 +08:00
parent 09f7d283c8
commit cf16a247f8
2 changed files with 198 additions and 3 deletions

View File

@ -625,6 +625,10 @@ void QtProjectWidgets::loadWellTree(QTreeWidgetItem *parent, QString fileFull, Q
//初始化树形控件中的右键菜单
void QtProjectWidgets::initMenu()
{
m_action_Paste = new QAction("粘贴", ui->treeWidget);
m_action_Paste ->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png"
connect(m_action_Paste, SIGNAL(triggered()), this, SLOT(onPasteSelObject()));
//根节点(项目名称)-右键菜单
_menuRoot = new QMenu(ui->treeWidget);
initRootTreeMenu(_menuRoot, ui->treeWidget);
@ -657,6 +661,14 @@ void QtProjectWidgets::initMenu()
_menuTableFolder = new QMenu(ui->treeWidget);
initTableFolderTreeMenu(_menuTableFolder, ui->treeWidget);
_menuCurveFolder = new QMenu(ui->treeWidget);
initCurveFolderTreeMenu(_menuCurveFolder, ui->treeWidget);
_menuParCardFolder = new QMenu(ui->treeWidget);
initParCardFolderTreeMenu(_menuParCardFolder, ui->treeWidget);
_menuWaveFolder = new QMenu(ui->treeWidget);
initWaveFolderTreeMenu(_menuWaveFolder, ui->treeWidget);
// //评估方案-右键菜单
// _menuEvaluate = new QMenu(ui->treeWidget);
// initEvaluateTreeMenu(_menuEvaluate, ui->treeWidget);
@ -708,6 +720,16 @@ void QtProjectWidgets::initParameterCardTreeMenu(QMenu *menu, QTreeWidget *treeW
action_CardObject->setIcon(QIcon(GetImagePath() + "icon/Sheet.png")); // 设置图标":/image/u174.png"
connect(action_CardObject, SIGNAL(triggered(bool)), this, SLOT(onShowParameterCard(bool)));
menu->addAction(action_CardObject);
QAction* action_Copy = new QAction("复制", treeWidget);
action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png"
connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject()));
menu->addAction(action_Copy);
QAction* action_Delete = new QAction("删除", treeWidget);
action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png"
connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject()));
menu->addAction(action_Delete);
}
//初始化曲线对象(AC、BS...)-右键菜单
@ -722,6 +744,16 @@ void QtProjectWidgets::initCurveObjectTreeMenu(QMenu *menu, QTreeWidget *treeWid
m_action_DepthShift->setIcon(QIcon(GetImagePath() + "icon/RigidDepthShifting.png")); // 设置图标
connect(m_action_DepthShift, SIGNAL(triggered(bool)), this, SLOT(onDepthShift(bool)));
menu->addAction(m_action_DepthShift);
QAction* action_Copy = new QAction("复制", treeWidget);
action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png"
connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject()));
menu->addAction(action_Copy);
QAction* action_Delete = new QAction("删除", treeWidget);
action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png"
connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject()));
menu->addAction(action_Delete);
}
//初始化波列对象-右键菜单
@ -736,6 +768,16 @@ void QtProjectWidgets::initWaveObjectTreeMenu(QMenu *menu, QTreeWidget *treeWidg
action_DepthShift->setIcon(QIcon(GetImagePath() + "icon/RigidDepthShifting.png")); // 设置图标
connect(action_DepthShift, SIGNAL(triggered(bool)), this, SLOT(onDepthShift(bool)));
menu->addAction(action_DepthShift);
QAction* action_Copy = new QAction("复制", treeWidget);
action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png"
connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject()));
menu->addAction(action_Copy);
QAction* action_Delete = new QAction("删除", treeWidget);
action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png"
connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject()));
menu->addAction(action_Delete);
}
//初始化表格对象-右键菜单
@ -750,6 +792,16 @@ void QtProjectWidgets::initTableObjectTreeMenu(QMenu *menu, QTreeWidget *treeWid
action_DepthShift->setIcon(QIcon(GetImagePath() + "icon/RigidDepthShifting.png")); // 设置图标
connect(action_DepthShift, SIGNAL(triggered(bool)), this, SLOT(onDepthShift(bool)));
menu->addAction(action_DepthShift);
QAction* action_Copy = new QAction("复制", treeWidget);
action_Copy->setIcon(QIcon(GetImagePath() + "icon/Copy.png")); // 设置图标":/image/u174.png"
connect(action_Copy, SIGNAL(triggered()), this, SLOT(onCopySelObject()));
menu->addAction(action_Copy);
QAction* action_Delete = new QAction("删除", treeWidget);
action_Delete->setIcon(QIcon(GetImagePath() + "icon/Delete.png")); // 设置图标":/image/u174.png"
connect(action_Delete, SIGNAL(triggered()), this, SLOT(onDeleteObject()));
menu->addAction(action_Delete);
}
//初始化根节点(井名称)-右键菜单
@ -793,6 +845,7 @@ void QtProjectWidgets::initSlfNameTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
action_New->setIcon(QIcon(GetImagePath() + "icon/Edit.png")); // 设置图标
connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onWelllogInformation()));
menu->addAction(action_New);
menu->addAction(m_action_Paste);
//
QAction* action_DepthShift = new QAction("深度移动", treeWidget);
@ -808,8 +861,24 @@ void QtProjectWidgets::initTableFolderTreeMenu(QMenu *menu, QTreeWidget *treeWid
action_New->setIcon(QIcon(GetImagePath() + "icon/CreateTable.png")); // 设置图标
connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onCreateNewTable()));
menu->addAction(action_New);
}
menu->addAction(m_action_Paste);
}
//初始化根节点(曲线表目录)-右键菜单
void QtProjectWidgets::initCurveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
{
menu->addAction(m_action_Paste);
}
//初始化根节点(参数卡目录)-右键菜单
void QtProjectWidgets::initParCardFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
{
menu->addAction(m_action_Paste);
}
//初始化根节点(波列目录)-右键菜单
void QtProjectWidgets::initWaveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
{
menu->addAction(m_action_Paste);
}
//新建项目
void QtProjectWidgets::onNewProject(bool checked)
{
@ -1069,6 +1138,92 @@ void QtProjectWidgets::onCreateNewTable()
}
}
//删除(曲线、表格、波列、参数卡)
void QtProjectWidgets::onDeleteObject()
{
CLogIO *logio=new CLogIO;
if(!logio->Open(m_strSlfName.toStdString().c_str(),CLogIO::modeReadWrite)) {
delete logio;
return;
}
logio->DeleteObject(m_strCurveObjectName.toLocal8Bit().data());
logio->Close();
foreach(QTreeWidgetItem *pItem, ui->treeWidget->selectedItems())
{
QTreeWidgetItem *parentItem = pItem->parent()->parent(); // 上两层目录是井次
RefreshWellRoundTree(parentItem);
break;
}
}
void QtProjectWidgets::onCopySelObject() // 复制
{
m_strCopySlfName = m_strSlfName; // 当前复制的对象Slf文件
m_strCopyCurveObjectName = m_strCurveObjectName; // 当前复制的对象名
}
void QtProjectWidgets::onPasteSelObject() // 粘贴
{
if (m_strCopySlfName == m_strSlfName)
{
CLogIO *logio=new CLogIO;
if(!logio->Open(m_strSlfName.toStdString().c_str(),CLogIO::modeReadWrite)) {
delete logio;
return;
}
char buf[1000];
int i=1;
while(1) {
sprintf(buf,"%s_%d",m_strCopyCurveObjectName.toStdString().c_str(),i++);
if (0>logio->FindObjectName(buf))
break;
}
logio->CopyObject(m_strCopyCurveObjectName.toStdString().c_str(), buf);
logio->Close();
delete logio;
foreach(QTreeWidgetItem *pItem, ui->treeWidget->selectedItems())
{
QTreeWidgetItem *parentItem = pItem/*->parent()*/; // 上一层目录是井次
if (parentItem && m_strSlfName == parentItem->data(0, Qt::UserRole+1).toString())
RefreshWellRoundTree(parentItem);
parentItem = parentItem = pItem->parent();
if (parentItem && m_strSlfName == parentItem->data(0, Qt::UserRole+1).toString())
RefreshWellRoundTree(parentItem);
break;
}
return;
}
}
//刷新井次树
void QtProjectWidgets::RefreshWellRoundTree(QTreeWidgetItem *parentItem)
{
if (parentItem && m_strSlfName == parentItem->data(0, Qt::UserRole+1).toString())
{
// qDeleteAll(parentItem->takeChildren());
QTreeWidgetItem *pWellItem = parentItem->parent();
QString Wellname = parentItem->text(0);
// parentItem->setExpanded(false);
loadWellTree(parentItem->parent(), m_strSlfName, Wellname);
pWellItem->removeChild(parentItem);
pWellItem->setExpanded(true);
int WellCount = pWellItem->childCount();
for (int i = 0; i < WellCount; ++i)
{
QTreeWidgetItem *childItem = pWellItem->child(i);
childItem->setExpanded(true);
int childCount = childItem->childCount();
for (int j = 0; j < childCount; ++j)
{
childItem->child(j)->setExpanded(true);
}
}
}
}
void QtProjectWidgets::onEditWelllogRound()
{
QTreeWidgetItem *wellItem = *ui->treeWidget->selectedItems().begin();
@ -1298,7 +1453,29 @@ void QtProjectWidgets::onItemClicked(QTreeWidgetItem* item, int index)
popMenu = _menuTableFolder;
m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点井次获取slf
}
else if (strTreeTag == "ParameterCard")
{
//表格数据-右键菜单
popMenu = _menuParCardFolder;
m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点井次获取slf
}
else if (strTreeTag == "Wave")
{
//波列数据-右键菜单
popMenu = _menuWaveFolder;
m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点井次获取slf
}
else if (strTreeTag == "Curve")
{
//曲线数据-右键菜单
popMenu = _menuTableFolder;
m_strSlfName = item->parent()->data(0, Qt::UserRole+1).toString();//从父节点井次获取slf
}
if (m_strCopySlfName != m_strSlfName)
m_action_Paste->setVisible(false);
else
m_action_Paste->setVisible(true);
//
if (qApp->mouseButtons() == Qt::RightButton) // 只针对鼠标右键,弹出菜单
{

View File

@ -57,8 +57,12 @@ public slots:
void onWelllogInformation(); //编辑测井信息
void onDepthShift_Well(bool checked = false); //深度移动
//表格数据 根节点
void onCreateNewTable(); //创建新表
void onCreateNewTable(); //创建新表
//删除(曲线、表格、波列、参数卡)
void onDeleteObject(); // 删除
void onCopySelObject(); // 复制
void onPasteSelObject(); // 粘贴
void RefreshWellRoundTree(QTreeWidgetItem *parentItem); // 刷新井次树
//向左侧树图,追加固井结论表格
void s_AddGujingToTree(QString strSlfName, QString strWellName, QString strLineName);
@ -77,7 +81,11 @@ public:
QMenu *_menuWellName; //井名
QMenu *_menuSlfName; //井次
QMenu *_menuTableFolder; //表目录
QMenu *_menuCurveFolder; //曲线目录
QMenu *_menuParCardFolder; //参数卡目录
QMenu *_menuWaveFolder; //波列目录
QAction* m_action_Paste; //黏贴
//根节点(项目名称)-右键菜单
QAction* m_action_New;
QAction* m_action_Open;
@ -91,6 +99,9 @@ public:
QString m_strSlfName;
QString m_strCurveObjectName;
QString m_strCopySlfName; // 当前复制的对象Slf文件
QString m_strCopyCurveObjectName; // 当前复制的对象名
public:
void loadIndexSysTree(QTreeWidgetItem *parent, QString fileFull, QString prjname);
void loadWellTree(QTreeWidgetItem *parent, QString fileFull, QString parentWellname);
@ -116,6 +127,13 @@ public:
void initSlfNameTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化根节点(表目录)-右键菜单
void initTableFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化根节点(曲线表目录)-右键菜单
void initCurveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化根节点(参数卡目录)-右键菜单
void initParCardFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
//初始化根节点(波列目录)-右键菜单
void initWaveFolderTreeMenu(QMenu *menu, QTreeWidget *treeWidget);
private:
QMap<QString, QList<QString> > m_qmapWellFiles;