添加左侧树搜索功能和双击查看数据功能

This commit is contained in:
zhaolei 2026-06-08 15:45:06 +08:00
parent cf62a10c16
commit 59ac718dff
2 changed files with 118 additions and 1 deletions

View File

@ -75,8 +75,10 @@ QtProjectWidgets::QtProjectWidgets(QWidget *parent)
//为树 tree 创建信号槽鼠标press时会触发对应的信号。
connect(ui->treeWidget, &QTreeWidget::itemPressed, this, &QtProjectWidgets::onItemClicked);
connect(ui->treeWidget, &QTreeWidget::itemDoubleClicked, this, &QtProjectWidgets::onItemDoubleClicked);
connect(ui->treeWidget, SIGNAL(closeTreeEditor()), this, SLOT(oncloseTreeEditor()));
connect(ui->lineEdit, &QLineEdit::textChanged, this, &QtProjectWidgets::on_textChanged);
//connect(ui->treeWidget, &QTreeWidget::itemChanged, this, &QtProjectWidgets::onItemChanged);
// 设置选择模式为多选模式
@ -829,6 +831,16 @@ void QtProjectWidgets::initWellsTreeMenu(QMenu *menu, QTreeWidget *treeWidget)
connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onCopyObject()));
menu->addAction(action_New);
action_New = new QAction("升序", treeWidget);
action_New->setIcon(QIcon(GetImagePath() + "icon/AscendingOrder.png")); // 设置图标
connect(action_New, SIGNAL(triggered(bool)), this, SLOT(slotAsendSort()));
menu->addAction(action_New);
action_New = new QAction("降序", treeWidget);
action_New->setIcon(QIcon(GetImagePath() + "icon/DescendingOrder.png")); // 设置图标
connect(action_New, SIGNAL(triggered(bool)), this, SLOT(slotDesendSort()));
menu->addAction(action_New);
action_New = new QAction("输出数据", treeWidget);
action_New->setIcon(QIcon(GetImagePath() + "icon/outcurves.png")); // 设置图标
connect(action_New, SIGNAL(triggered(bool)), this, SLOT(onOutWellLogRound()));
@ -2585,6 +2597,82 @@ void QtProjectWidgets::onCopyObject()
return;
}
// 左侧树搜索
void QtProjectWidgets::on_textChanged(const QString &text)
{
bool bHidden = !text.isEmpty();
QTreeWidgetItem *item = ui->treeWidget->topLevelItem(0);
int childCount = item->childCount(); // 获取子节点数量
for (int i = 0; i < childCount; ++i)
{
//井组,数据分析...
QTreeWidgetItem *wellGroupItem = item->child(i);
QString wellGroupname = wellGroupItem->text(0);
if (wellGroupname == "井组")
{
int wellCount = wellGroupItem->childCount(); // 获取井节点数量
for (int j = 0; j < wellCount; ++j)
{
//井组,数据分析...
QTreeWidgetItem *wellItem = wellGroupItem->child(j);
wellItem->setHidden(bHidden);
QString strName = wellItem->text(0);
strName = strName.toUpper();
if (!text.isEmpty() && strName.contains(text.toUpper()))
{
wellItem->setHidden(false);
ui->treeWidget->expandItem(wellGroupItem);
continue;
}
// 获取井次节点数量
int wellLogCount = wellItem->childCount();
for (int k = 0; k < wellLogCount; ++k)
{
QTreeWidgetItem *wellLogItem = wellItem->child(k);
int wellLogCountChild = wellLogItem->childCount();
wellLogItem->setHidden(bHidden);
strName = wellLogItem->text(0);
strName = strName.toUpper();
if (!text.isEmpty() && strName.contains(text.toUpper()))
{
wellLogItem->setHidden(false);
ui->treeWidget->expandItem(wellItem);
continue;
}
for (int m = 0; m < wellLogCountChild; ++m)
{
QTreeWidgetItem *wellObject = wellLogItem->child(m);
wellObject->setHidden(bHidden);
int wellObjectCount = wellObject->childCount();
for (int n = 0; n < wellObjectCount; ++n)
{
QTreeWidgetItem *Object = wellObject->child(n);
Object->setHidden(bHidden);
QString strName = Object->text(0);
strName = strName.toUpper();
if (!text.isEmpty() && strName.contains(text.toUpper()))
{
item->setHidden(false);
wellGroupItem->setHidden(false);
wellItem->setHidden(false);
wellLogItem->setHidden(false);
wellObject->setHidden(false);
ui->treeWidget->expandItem(wellGroupItem);
ui->treeWidget->expandItem(wellItem);
ui->treeWidget->expandItem(wellLogItem);
ui->treeWidget->expandItem(wellObject);
Object->setHidden(false);
continue;
}
}
}
}
}
}
}
}
//点击树图节点
void QtProjectWidgets::onItemClicked(QTreeWidgetItem* item, int index)
{
@ -2688,6 +2776,33 @@ void QtProjectWidgets::onItemClicked(QTreeWidgetItem* item, int index)
}
}
//双击显示
void QtProjectWidgets::onItemDoubleClicked(QTreeWidgetItem* item, int index)
{
QString strTreeTag = item->data(0, Qt::UserRole).toString();
if (strTreeTag == "curveObject"){
//曲线对象(AC、BS...)
onShowCurve(true);
}
else if (strTreeTag == "TDTObject"){
//TDT
onShowTDT(true);
}
else if (strTreeTag == "waveObject"){
//波列对象
onShowWave(true);
}
else if (strTreeTag == "cardObject"){
//参数卡对象
onShowParameterCard(true);
}
else if (strTreeTag == "tableObject")
{
//表格对象
onShowTable(true);
}
}
//勾选/不勾选树图节点
void QtProjectWidgets::onItemChanged(QTreeWidgetItem* item, int index)
{

View File

@ -37,9 +37,11 @@ public slots:
//void s_initTreeWidget(QString strName);//初始化树图控件
void s_loadTreeWidget(QString fileFull);//加载树图
void on_textChanged(const QString &text);
void onItemClicked(QTreeWidgetItem* item, int index);//鼠标点击tree菜单项
void onItemDoubleClicked(QTreeWidgetItem* item, int index);//鼠标双击tree菜单项
void onItemChanged(QTreeWidgetItem* item, int index);//勾选/不勾选
void oncloseTreeEditor(); //重命名
//工区管理(项目)