This commit is contained in:
crqiqi77 2026-04-10 11:46:37 +08:00
commit 2bfd16df4a
27 changed files with 584 additions and 406 deletions

View File

@ -199,7 +199,10 @@ QVariant PythonHandler::pythonObjectToQVariant(PyObject *obj)
map[key] = pythonObjectToQVariant(pValue);
}
}
#ifdef _RELEASE
Py_DECREF(pKeys);
#endif
return map;
}
else if (obj == Py_None) {
@ -222,14 +225,17 @@ QString PythonHandler::capturePythonError() {
PyObject* pstr = PyObject_Str(pvalue);
if (pstr) {
errorMsg = QString::fromUtf8(PyUnicode_AsUTF8(pstr));
#ifdef _RELEASE
Py_DECREF(pstr);
#endif
}
}
#ifdef _RELEASE
// 清理
Py_XDECREF(ptype);
Py_XDECREF(pvalue);
Py_XDECREF(ptraceback);
#endif
return errorMsg;
}
@ -284,8 +290,11 @@ QVariant PythonHandler::executeScript(const QString &scriptPath,
PyErr_Print();
}
emit addLog("无法找到函数:" + functionName);
#ifdef _RELEASE
Py_XDECREF(pFunc);
Py_DECREF(pModule);
#endif
return QVariant();
}
@ -427,7 +436,10 @@ QVariant PythonHandler::executeCode(const QString &code)
if (pResult) {
QVariant result = pythonObjectToQVariant(pResult);
#ifdef _RELEASE
Py_DECREF(pResult);
#endif
return result;
} else {
PyErr_Print();

16
common/common.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef LOG_COMMON_H
#define LOG_COMMON_H
#include <QObject>
// 定义一个枚举,方便位操作(可选)
enum BorderFlag {
NoBorder = 0,
TopBorder = 1 << 0,
BottomBorder = 1 << 1,
LeftBorder = 1 << 2,
RightBorder = 1 << 3
};
Q_DECLARE_FLAGS(BorderFlags, BorderFlag)
#endif // LOG_COMMON_H

View File

@ -0,0 +1,64 @@
#pragma once
#include <QPainter>
#include <QTableWidgetItem>
#include <QStyledItemDelegate>
#include "common.h"
#pragma execution_character_set("utf-8")
// 设置某个单元格的边框状态
void setItemBorderFlags(QTableWidgetItem *item, BorderFlags flags) {
item->setData(Qt::UserRole, static_cast<int>(flags));
}
// 获取边框状态
BorderFlags getItemBorderFlags(const QTableWidgetItem *item) {
return static_cast<BorderFlags>(item->data(Qt::UserRole).toInt());
}
class ItemBorderDelegate : public QStyledItemDelegate {
public:
using QStyledItemDelegate::QStyledItemDelegate;
void paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const override {
// 1. 绘制默认内容(文本、图标等)
QStyledItemDelegate::paint(painter, option, index);
const QTableWidget* ptabWgt = qobject_cast<QTableWidget*>(const_cast<QWidget*>(option.widget));
if (!ptabWgt) return;
// 2. 获取该单元格存储的边框标志
QTableWidgetItem *item = ptabWgt->item(index.row(), index.column());
if (!item) return;
BorderFlags flags = getItemBorderFlags(item);
if (flags == NoBorder) return;
// 3. 准备绘制边框
painter->save();
painter->setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义
QRect rect = option.rect;
rect.setLeft(rect.left() + 1);
rect.setTop(rect.top() + 1);
// 上边框
if (flags & TopBorder) {
painter->drawLine(rect.topLeft(), rect.topRight());
}
// 下边框
if (flags & BottomBorder) {
painter->drawLine(rect.bottomLeft(), rect.bottomRight());
}
// 左边框
if (flags & LeftBorder) {
painter->drawLine(rect.topLeft(), rect.bottomLeft());
}
// 右边框
if (flags & RightBorder) {
painter->drawLine(rect.topRight(), rect.bottomRight());
}
painter->restore();
}
};

View File

@ -176,7 +176,7 @@ void TransparentDraggableGujing::setRange(double left_Low, double right_Hight, b
if(left_Low >= right_Hight) return;
double lY1 = mPlot->yAxis->range().lower;//+10
double lY2 = mPlot->yAxis->range().upper;
double lY2 = mPlot->yAxis->range().upper-3;
mRect->topLeft->setCoords(left_Low, lY1);
mRect->bottomRight->setCoords(right_Hight, lY2);

View File

@ -167,8 +167,8 @@ void TransparentDraggableResult::setRange(double left_Low, double right_Hight, b
{
if(left_Low >= right_Hight) return;
double lY1 = m_nShowPos*g_dPixelPerCm+mPlot->yAxis->range().lower;//+10
double lY2 = m_nShowPos*g_dPixelPerCm+(mPlot->yAxis->range().upper-mPlot->yAxis->range().lower)* (m_nConclusionProportion /100.0f);
double lY1 = m_nShowPos*g_dPixelPerCm+mPlot->yAxis->range().lower-1;//+10
double lY2 = m_nShowPos*g_dPixelPerCm+(mPlot->yAxis->range().upper-mPlot->yAxis->range().lower)* (m_nConclusionProportion /100.0f)-2;
mRect->topLeft->setCoords(left_Low, lY1);
mRect->bottomRight->setCoords(right_Hight, mPlot->yAxis->range().upper);

View File

@ -2710,15 +2710,39 @@ void FormDraw::crossTrackSetting()
}
void FormDraw::setBorderFlags(BorderFlags flags)
{
m_BorderFlags = flags;
}
void FormDraw::paintEvent(QPaintEvent*)
{
//if (m_listLineName.size() > 0 && m_listLineName.at(0) == "AC")
//{
// QPainter painter(this);
// QRect rect = this->rect();
// //背景透明
// painter.fillRect(rect.left(), rect.top(), rect.width(), rect.height(), QColor(200, 0, 0)); //QColor(67, 67, 67, 100)
//}
QPainter painter(this);
QRect rect = this->rect();
rect.setLeft(rect.left() + 1);
rect.setTop(rect.top() + 1);
// 3. 准备绘制边框
painter.save();
painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义
// 上边框
if (m_BorderFlags & TopBorder) {
painter.drawLine(rect.topLeft(), rect.topRight());
}
// 下边框
if (m_BorderFlags & BottomBorder) {
painter.drawLine(rect.bottomLeft(), rect.bottomRight());
}
// 左边框
if (m_BorderFlags & LeftBorder) {
painter.drawLine(rect.topLeft(), rect.bottomLeft());
}
// 右边框
if (m_BorderFlags & RightBorder) {
painter.drawLine(rect.topRight(), rect.bottomRight());
}
painter.restore();
}
@ -3071,6 +3095,10 @@ void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellNam
}
else
{
//此处追加参照了下方setDrawData函数的处理
//不然没有设置setRange初始范围不支持新的右侧滚动条的setRange
curv->m_bX2Y = false;
curv->initWave(strSlfName, strWaveName);
_nSamples = curv->getScaleV();
}
@ -3401,7 +3429,8 @@ void FormDraw::s_MouseMove(QString strUuid, QString strWellName, QString strTrac
int index=logio->OpenCurve(form->m_strLineName.toStdString().c_str());
if(index<0) {
delete logio;
return;
continue;
//return;
}
logio->ReadCurve(index, dep, 1, &fValue);
logio->CloseCurve(index);
@ -3710,6 +3739,10 @@ void FormDraw::s_addGanZuangTu(QString strUuid, QString strSlfName, QString strW
curv->yAxis->setTicks(false);
curv->xAxis2->setTicks(false);
curv->yAxis2->setTicks(false);
curv->xAxis->setVisible(false);
curv->xAxis2->setVisible(false);
curv->yAxis->setVisible(false);
curv->yAxis2->setVisible(false);
//蝌蚪图
// curv->mKedou = true;
//隐藏网格
@ -4173,6 +4206,10 @@ void FormDraw::s_addJiegutext(QString strUuid, QString strSlfName, QString strWe
curv->yAxis->setTicks(false);
curv->xAxis2->setTicks(false);
curv->yAxis2->setTicks(false);
curv->xAxis->setVisible(false);
curv->xAxis2->setVisible(false);
curv->yAxis->setVisible(false);
curv->yAxis2->setVisible(false);
QColor newlineColor=QColor(0,0,0);
QString strAliasName = "气测-FMT-射孔-文本";
@ -4571,6 +4608,10 @@ void FormDraw::s_addTubingstring(QString strUuid, QString strSlfName, QString st
curv->yAxis->setTicks(false);
curv->xAxis2->setTicks(false);
curv->yAxis2->setTicks(false);
curv->xAxis->setVisible(false);
curv->xAxis2->setVisible(false);
curv->yAxis->setVisible(false);
curv->yAxis2->setVisible(false);
//套管组件
//QString strWaveName = "TUBTOOLS";
@ -4774,6 +4815,11 @@ void FormDraw::initForm(QMyCustomPlot *widget, QString strSlfName, QString strLi
widget->xAxis->ticker()->setTickCount(10);//x个主刻度
widget->yAxis->ticker()->setTickCount(60);//y个主刻度
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//对调XY轴在最前面设置
QCPAxis *yAxis = widget->yAxis;
QCPAxis *xAxis = widget->xAxis;
@ -5442,6 +5488,10 @@ void FormDraw::initTableLine(QMyCustomPlot *widget, QString strSlfName, QString
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
if (m_bTableData)
{
@ -5493,6 +5543,10 @@ void FormDraw::initWords(QMyCustomPlot *widget, QString strSlfName, QString strL
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
widget->LoadFromSLF_Text(strSlfName, strLineName);
@ -5539,6 +5593,10 @@ void FormDraw::initLayer(QMyCustomPlot *widget, QString strSlfName, QString strL
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//地质层位道
widget->LoadFromSLF_Layer(strSlfName, strLineName);
@ -5588,6 +5646,10 @@ void FormDraw::initIMAGE_DATA(QMyCustomPlot *widget, QString strSlfName, QString
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
widget->LoadFromIMAGE_SLF(strSlfName, strLineName);
//显示文本
@ -5699,6 +5761,10 @@ void FormDraw::initResult(QMyCustomPlot *widget, QString strSlfName, QString str
widget->yAxis->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
LoadFromSLF_Result(widget, strSlfName, strLineName);
@ -5793,6 +5859,10 @@ void FormDraw::initGeoLith(QMyCustomPlot *widget, QString strSlfName, QString st
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//含油占比
if(listOtherProperty.size()>=12)
@ -5903,6 +5973,10 @@ void FormDraw::initSwallCore(QMyCustomPlot *widget, QString strSlfName, QString
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
widget->LoadFromSLF_SwallCore(strSlfName, strLineName);
@ -5950,6 +6024,10 @@ void FormDraw::initGujing(QMyCustomPlot *widget, QString strSlfName, QString str
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
widget->LoadFromSLF_Gujing(strSlfName, strLineName);
@ -5969,7 +6047,8 @@ void FormDraw::initDepth(QMyCustomPlot *curv)
{
// x轴隐藏
curv->yAxis->setTicks(true);
curv->yAxis2->setVisible(false);
curv->yAxis->setVisible(true);
curv->yAxis->setBasePen(Qt::NoPen);
//curv->yAxis->setTickLabels(true);
curv->yAxis->setTickLabelSide(QCPAxis::lsInside);
@ -6826,6 +6905,10 @@ void FormDraw::initCorePhysics(QMyCustomPlot *widget, QString strSlfName, QStrin
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
QVector<double> x, y;
@ -7072,6 +7155,10 @@ void FormDraw::DrawJykt(QMyCustomPlot *widget, QString strSlfName)
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//-------------
float tempf,flVal;
@ -7198,6 +7285,10 @@ void FormDraw::DrawDenv(QMyCustomPlot *widget, QString strSlfName)
widget->yAxis->setTicks(false);
widget->xAxis2->setTicks(false);
widget->yAxis2->setTicks(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//
QPen pPen(m_TailColor,m_nTailWidth);

View File

@ -10,6 +10,7 @@
#include "LogIO.h"
#include "MemRdWt.h"
#include "FormLine.h"
#include "common.h"
#pragma execution_character_set("utf-8")
@ -86,6 +87,8 @@ public:
// 跨道设置
void crossTrackSetting();
void setBorderFlags(BorderFlags flags);
private:
Ui::FormDraw *ui;
@ -126,6 +129,8 @@ public:
QStringList m_listWaveName;
QStringList m_listTableName;
BorderFlags m_BorderFlags;
//X坐标
float m_vmax;
float m_vmin;

View File

@ -770,7 +770,7 @@ void FormInfo::paintEvent(QPaintEvent* event)
QRect rectRound(rect.left()+2,rect.top()+4, rect.width()-4, rect.height()-8);
painter.setPen(QPen(m_lineColor, m_dWidth, m_lineStyle));
//painter.drawRoundRect(rectRound);//利用画刷(颜色/岩性图片),画框
painter.drawRect(rectRound);
//painter.drawRect(rectRound);
QString strShowTxt = "";
painter.setBrush(Qt::NoBrush); // 确保文字不被填充色遮挡
@ -1765,6 +1765,13 @@ void FormInfo::contextMenuEvent(QContextMenuEvent *event)
menu.addAction(QIcon(::GetImagePath() + "icon/Delete.png"), "删除当前对象", this, &FormInfo::onDeleteTable);
menu.exec(event->globalPos());
}
else if(m_strType=="waveObject")
{
QMenu menu(this);
menu.addAction(QIcon(::GetImagePath() + "icon/Sheet.png"), "数据对象查看", this, &FormInfo::onShowWave);
menu.addAction(QIcon(::GetImagePath() + "icon/Delete.png"), "删除当前对象", this, &FormInfo::onDeleteWave);
menu.exec(event->globalPos());
}
else if(m_strType=="JiegutextObject")
{
//气测/FMT/射孔/文本
@ -1820,3 +1827,15 @@ void FormInfo::onDeleteTable()
//删除表格
emit CallManage::getInstance()->sig_delTableLine(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
}
//波列查看
void FormInfo::onShowWave()
{
emit CallManage::getInstance()->sig_ShowWave(m_strSlfName, m_strLineName);
}
//删除波列
void FormInfo::onDeleteWave()
{
//删除Wave
emit CallManage::getInstance()->sig_delWave(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
}

View File

@ -382,6 +382,12 @@ public slots:
//删除表格
void onDeleteTable();
//波列查看
void onShowWave();
//删除波列
void onDeleteWave();
};

View File

@ -54,15 +54,16 @@ FormTrack::FormTrack(QWidget *parent, QString strWellName, QString strTrackName)
this, SLOT(s_delLine(QString, QString, QString, QString)));
//表格
connect(this, SIGNAL(sig_AddWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
connect(this, SIGNAL(sig_AddTableLine(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QStringList)),
this, SLOT(s_AddTableLine(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QStringList)));
connect(CallManage::getInstance(), SIGNAL(sig_delTableLine(QString, QString, QString, QString)),
this, SLOT(s_delTableLine(QString, QString, QString, QString)));
//波列
connect(this, SIGNAL(sig_AddTableLine(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QStringList)),
this, SLOT(s_AddTableLine(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QStringList)));
connect(this, SIGNAL(sig_AddWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString)),
this, SLOT(s_delWave(QString, QString, QString, QString)));
// 深度
connect(this, SIGNAL(sig_AddDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
@ -171,6 +172,44 @@ FormInfo* FormTrack::getFormInfoByParameters(QString strUuid, QString strWellNam
return NULL;
}
void FormTrack::setBorderFlags(BorderFlags flags)
{
m_BorderFlags = flags;
}
void FormTrack::paintEvent(QPaintEvent *event)
{
QWidget::paintEvent(event);
QPainter painter(this);
QRect rect = this->rect();
rect.setLeft(rect.left() + 1);
rect.setTop(rect.top() + 1);
// 绘制边框
painter.save();
painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义
// 上边框
if (m_BorderFlags & TopBorder) {
painter.drawLine(rect.topLeft(), rect.topRight());
}
// 下边框
if (m_BorderFlags & BottomBorder) {
painter.drawLine(rect.bottomLeft(), rect.bottomRight());
}
// 左边框
if (m_BorderFlags & LeftBorder) {
painter.drawLine(rect.topLeft(), rect.bottomLeft());
}
// 右边框
if (m_BorderFlags & RightBorder) {
painter.drawLine(rect.topRight(), rect.bottomRight());
}
painter.restore();
}
//
// void FormTrack::setTrackPropert(QJsonObject trackObj)
// {
@ -537,6 +576,38 @@ void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTr
}
void FormTrack::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName)
{
//井名&道名不一致
if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName)
{
}
else
{
return;
}
//
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);
FormInfo *formInfo = qobject_cast<FormInfo*>(myWidget);//获得widget
if(formInfo)
{
if(strUuid == formInfo->m_strUuid
&& formInfo->m_strWellName == strWellName
&& formInfo->m_strTrackName == strTrackName
&& formInfo->m_strLineName == strLineName)
{
ui->tableWidget->removeRow(i);
}
}
}
}
}
void FormTrack::s_AddTableLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty)
{
if(strLineName == "FRAC_HOLE.TABLE" || strLineName == "WORDS_RELUST" || strLineName == "RESULT"

View File

@ -4,6 +4,7 @@
#include <QWidget>
#include "forminfo.h"
#include <QStyledItemDelegate>
#include "common.h"
#pragma execution_character_set("utf-8")
@ -56,9 +57,14 @@ public:
FormInfo* getFormInfoByParameters(QString strUuid, QString strWellName,
QString strTrackName, QString strLineName);
void setBorderFlags(BorderFlags flags);
private:
Ui::FormTrack *ui;
protected:
void paintEvent(QPaintEvent *event);
public:
QString m_strUuid;
// 道ID
@ -69,7 +75,7 @@ public:
FormInfo *m_formInfo = NULL;
// 创建自定义单元格委托
//NoLRBorderDelegate *m_delegate;
BorderFlags m_BorderFlags;
public:
void Add(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strType, QStringList listOtherProperty={});
@ -101,6 +107,7 @@ public slots:
void s_delLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
void s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
void s_AddTableLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={});
void s_delTableLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);

View File

@ -15,16 +15,16 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
<number>2</number>
</property>
<property name="topMargin">
<number>0</number>
<number>2</number>
</property>
<property name="rightMargin">
<number>0</number>
<number>2</number>
</property>
<property name="bottomMargin">
<number>0</number>
<number>2</number>
</property>
<item row="0" column="0">
<widget class="PreQTableWidget" name="tableWidget"/>

View File

@ -30,6 +30,11 @@ FormTrackTop::~FormTrackTop()
delete ui;
}
void FormTrackTop::setBorderFlags(BorderFlags flags)
{
m_BorderFlags = flags;
}
void FormTrackTop::setTrackTopPropert(QJsonObject topObj)
{
if (topObj.contains("Font"))
@ -60,6 +65,8 @@ QJsonObject FormTrackTop::makeJson()
void FormTrackTop::paintEvent(QPaintEvent* event)
{
QWidget::paintEvent(event);
QPainter painter(this);
QRect rect = this->rect();
//背景透明
@ -70,7 +77,33 @@ void FormTrackTop::paintEvent(QPaintEvent* event)
painter.setPen(m_fontColor); // fontColor QColor(220, 220, 220)
painter.drawText(rect.left(), rect.top(), rect.width(), rect.height(), Qt::AlignCenter, m_strTrackName);
QWidget::paintEvent(event);
rect.setLeft(rect.left() + 1);
rect.setTop(rect.top() + 1);
// 3. 准备绘制边框
painter.save();
painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义
// 上边框
if (m_BorderFlags & TopBorder) {
painter.drawLine(rect.topLeft(), rect.topRight());
}
// 下边框
if (m_BorderFlags & BottomBorder) {
painter.drawLine(rect.bottomLeft(), rect.bottomRight());
}
// 左边框
if (m_BorderFlags & LeftBorder) {
painter.drawLine(rect.topLeft(), rect.bottomLeft());
}
// 右边框
if (m_BorderFlags & RightBorder) {
painter.drawLine(rect.topRight(), rect.bottomRight());
}
painter.restore();
}
void FormTrackTop::dragEnterEvent(QDragEnterEvent* event)

View File

@ -8,6 +8,7 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include "common.h"
#pragma execution_character_set("utf-8")
@ -23,6 +24,8 @@ public:
explicit FormTrackTop(QWidget *parent = nullptr, QString strSlfName="", QString strWellName="", QString strTrackName="", QString strLineName="", QColor lineColor=QColor(255,0,0));
~FormTrackTop();
void setBorderFlags(BorderFlags flags);
void setTrackTopPropert(QJsonObject topObj);
private:
Ui::FormTrackTop *ui;
@ -50,6 +53,7 @@ public:
QFont m_font;
QColor m_fontColor;//颜色
BorderFlags m_BorderFlags;
public:

View File

@ -23,17 +23,15 @@ FormWell::FormWell(QWidget *parent, QString strWellName) :
//
ui->tableWidget->verticalHeader()->hide(); //行
//ui->tableWidget->horizontalHeader()->hide();//列
ui->tableWidget->horizontalHeader()->hide();//列
int rowcount = 3; //总行数
ui->tableWidget->setRowCount(rowcount); //动态设置行数
//ui->tableWidget->verticalHeader()->setFixedWidth(3);//标题栏宽度
ui->tableWidget->horizontalHeader()->setFixedHeight(3);
//左右边框隐藏
ui->tableWidget->setStyleSheet("QTableView::item {border-left: 0px solid black;} \
QTableView::item:selected {border-left: 0px solid black; color:#57595B; background:#E4E4E4;}\
QTableView::item {border-right: 0px solid black;} \
QTableView::item:selected {border-right: 0px solid black;}");
//"QTableView::item:selected {color:#57595B; background:#E4E4E4;}"
ui->tableWidget->setShowGrid(false);
ui->tableWidget->setStyleSheet("QTableView {border: 0px solid black;} QTableView::item {border: 0px solid black;} \
QTableView::item:selected {color:#57595B; background:#E4E4E4;}");
// 假设你的类中有一个槽函数onTableRowsInserted(QModelIndex parent, int first, int last)
//connect(ui->tableWidget->model(), &QAbstractItemModel::columnsInserted,
@ -189,6 +187,7 @@ QVector<QWidget *> FormWell::new_track(QStringList listdt, QString strTrackName)
ui->tableWidget->setRowHeight(i, 100);
//
FormTrackTop* trackTop= new FormTrackTop(this, strSlfName, strWellName, strTrackName);
trackTop->setBorderFlags(BorderFlags(BottomBorder | RightBorder));
// if ("curveObject" == strType)
// trackTop->setFixedWidth(nW/2);
vec << trackTop;
@ -203,6 +202,7 @@ QVector<QWidget *> FormWell::new_track(QStringList listdt, QString strTrackName)
//曲线名称栏
formTrack = new FormTrack(this, strWellName, strTrackName);
formTrack->setBorderFlags(BorderFlags(BottomBorder | RightBorder));
// if ("curveObject" == strType)
// formTrack->setFixedWidth(nW / 2);
vec << formTrack;
@ -228,6 +228,7 @@ QVector<QWidget *> FormWell::new_track(QStringList listdt, QString strTrackName)
ui->tableWidget->setRowHeight(i, (int)dHight);//7582
//曲线绘制栏
FormDraw *formDraw = new FormDraw(this, strWellName, strTrackName);
formDraw->setBorderFlags(BorderFlags(BottomBorder | RightBorder));
vec << formDraw;
formDraw->m_iY1 = m_iY1;
formDraw->m_iY2 = m_iY2;
@ -244,6 +245,11 @@ QVector<QWidget *> FormWell::new_track(QStringList listdt, QString strTrackName)
return vec;
}
void FormWell::setBorderFlags(BorderFlags flags)
{
m_BorderFlags = flags;
}
int FormWell::getTableWidgetColumn(QString strTrackUuid)
{
int nret = -1;
@ -260,6 +266,36 @@ int FormWell::getTableWidgetColumn(QString strTrackUuid)
return nret;
}
void FormWell::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QRect rect = this->rect();
rect.setLeft(rect.left() + 1);
rect.setTop(rect.top() + 1);
// 3. 准备绘制边框
painter.save();
painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义
// 上边框
if (m_BorderFlags & TopBorder) {
painter.drawLine(rect.topLeft(), rect.topRight());
}
// 下边框
if (m_BorderFlags & BottomBorder) {
painter.drawLine(rect.bottomLeft(), rect.bottomRight());
}
// 左边框
if (m_BorderFlags & LeftBorder) {
painter.drawLine(rect.topLeft(), rect.bottomLeft());
}
// 右边框
if (m_BorderFlags & RightBorder) {
painter.drawLine(rect.topRight(), rect.bottomRight());
}
painter.restore();
}
void FormWell::s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iTableType, QString strFormInfoType)
{
if(m_strUuid == strUuid &&

View File

@ -5,6 +5,7 @@
#include "formtrack.h"
#include "formdraw.h"
#include "formtracktop.h"
#include "common.h"
#pragma execution_character_set("utf-8")
@ -25,9 +26,12 @@ public:
QVector<QWidget*> new_track(QStringList listdt, QString strTrackName = "");
void setBorderFlags(BorderFlags flags);
// 根据道ID获取列索引
int getTableWidgetColumn(QString strTrackUuid);
protected:
void paintEvent(QPaintEvent *event);
private:
Ui::FormWell *ui;
@ -43,6 +47,8 @@ public:
// 道图形
QMap<QString, QVector<QWidget*>> m_mapFormDraw;
BorderFlags m_BorderFlags;
public:
QJsonObject makeJson();
QStringList getLineList(QString strWellName, QString strTrackName);

View File

@ -15,16 +15,16 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>0</number>
<number>2</number>
</property>
<property name="topMargin">
<number>0</number>
<number>2</number>
</property>
<property name="rightMargin">
<number>0</number>
<number>2</number>
</property>
<property name="bottomMargin">
<number>0</number>
<number>2</number>
</property>
<item row="0" column="0">
<widget class="QMyTableWidget" name="tableWidget"/>

View File

@ -20,6 +20,7 @@
<QtMoc Include="transparentdraggableSelectRect.h" />
<QtMoc Include="..\CallManage\CallManage.h" />
<QtMoc Include="..\common\dropdownbutton.h" />
<ClInclude Include="..\common\common.h" />
<ClInclude Include="..\common\geometryutils.h" />
<ClInclude Include="3rd_qcustomplot\smoothcurve.h" />
<QtMoc Include="3rd_qcustomplot\v2_1\qcustomplot.h" />
@ -35,6 +36,7 @@
<ClInclude Include="GeoIndicatorGenerator.h" />
<ClInclude Include="Gradient.h" />
<QtMoc Include="mainwindowsplitter.h" />
<ClInclude Include="ItemBorderDelegate.h" />
<ClInclude Include="ObjectArchive.h" />
<QtMoc Include="ViewInfo.h" />
<QtMoc Include="variantmanager.h" />

View File

@ -68,6 +68,12 @@
<ClInclude Include="..\common\geometryutils.h">
<Filter>common</Filter>
</ClInclude>
<ClInclude Include="ItemBorderDelegate.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\common\common.h">
<Filter>common</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<QtMoc Include="ConsoleOutputWidget.h">

View File

@ -407,13 +407,6 @@ void MainWindow::s_New()
void MainWindow::s_Open()
{
//关闭老项目
bool bClosed = closeProject();
if(!bClosed)
{
return;
}
//打开
QString fileFull = "";
fileFull = QFileDialog::getOpenFileName(this,
@ -422,6 +415,13 @@ void MainWindow::s_Open()
tr("项目文件(*.wwl)"));
if (!fileFull.isEmpty())
{
//关闭老项目
bool bClosed = closeProject();
if(!bClosed)
{
return;
}
emit CallManage::getInstance()->sig_OpenProject(fileFull);
}
}

View File

@ -17,6 +17,7 @@
#include "selectwelldialog.h"
#include "mainwindow.h"
#include <QSvgGenerator>
#include "ItemBorderDelegate.h"
//主窗口为了方便获取tab当前页
extern MainWindow *g_mainWindow;
@ -66,18 +67,19 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
ui->toolBar_3->hide();
ui->toolBar_plugin->hide();
//加载样式
loadStyle(":/qrc/qss/flatgray.css");
//loadStyle(":/qrc/qss/flatgray.css");
//this->setStyleSheet("QWidget{border: 1px solid black;}");
//ui->centralwidget->setVisible(false);
//ui->tableWidget_2->setVisible(false);
//-------------------------------------
//ui->tableWidget_2->setFrameShape(QFrame::NoFrame); //设置无边框
//隐藏网格线
ui->tableWidget_2->setShowGrid(false);
//设置样式表,只显示竖直边框
ui->tableWidget_2->setStyleSheet( "QTableView::item {border-left: 1px solid black;} \
QTableView::item:selected {border-left: 1px solid black; color:#57595B; background:#E4E4E4;}\
QTableView::item {border-right: 1px solid black;} \
QTableView::item:selected {border-right: 1px solid black;}");
ui->tableWidget_2->setItemDelegate(new ItemBorderDelegate(ui->tableWidget_2));
ui->tableWidget_2->setStyleSheet("QTableView {border: 0px solid black;} QTableView::item {border: 0px solid black;} \
QTableView::item:selected {color:#57595B; background:#E4E4E4;}");
ui->tableWidget_2->verticalHeader()->hide(); //行
//ui->tableWidget_2->horizontalHeader()->hide();//列
@ -2904,6 +2906,7 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName)
ui->tableWidget_2->setRowHeight(i, 100);
//
QTableWidgetItem* item = new QTableWidgetItem(strWellName);
setItemBorderFlags(item, BorderFlags(TopBorder | BottomBorder | LeftBorder | RightBorder));
item->setData(Qt::UserRole + 1, strSlfName);
item->setFlags(item->flags() & (~Qt::ItemIsEditable));
item->setTextAlignment(Qt::AlignCenter); //设置文本居中
@ -2928,6 +2931,7 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName)
ui->tableWidget_2->setRowHeight(i, (int)dHight);//8020
//
FormWell *widgetWell = new FormWell(this, strWellName);
widgetWell->setBorderFlags(BorderFlags(BottomBorder | LeftBorder | RightBorder));
widgetWell->m_iY1 = m_iY1;
widgetWell->m_iY2 = m_iY2;
widgetWell->m_strUuid = m_strUuid;

View File

@ -15,14 +15,26 @@
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>3</number>
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item row="1" column="1">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTableWidget" name="tableWidget_2"/>
</item>
<item>
<widget class="QWidget" name="widget" native="true"/>
</item>
</layout>
</item>
</layout>

View File

@ -163,20 +163,24 @@ void PreQTableWidget::dropEvent(QDropEvent *event)
}
else if(strType=="JiegutextObject")
{
//删除表格
// emit CallManage::getInstance()->sig_delTableLine(m_strUuid, strWellName, strTrackName, strLineName);
//气测/FMT/射孔/文本
emit CallManage::getInstance()->sig_AddJiegutext(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
}
else if(strType=="LogfaceObject")
{
//删除表格
// emit CallManage::getInstance()->sig_delTableLine(m_strUuid, strWellName, strTrackName, strLineName);
if (list.size() > 4)
{
QString strListPropertyText = list[4];
QStringList listOtherProperty = strListPropertyText.split(", "); // 以逗号加空格为分隔符分割字符串
//沉积相
emit CallManage::getInstance()->sig_AddLogface(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName, 0, listOtherProperty);
}
else
{
//沉积相
emit CallManage::getInstance()->sig_AddLogface(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
}
}
else if(strType=="MCalsObject")
{
//多臂井径
@ -184,14 +188,9 @@ void PreQTableWidget::dropEvent(QDropEvent *event)
}
else if(strType=="TubingstringObject")
{
//删除表格
// emit CallManage::getInstance()->sig_delTableLine(m_strUuid, strWellName, strTrackName, strLineName);
//套管组件
emit CallManage::getInstance()->sig_AddTubingstring(m_strUuid, strSlfName, strWellName, m_strTrackName, strLineName);
}
//
//m_listLineName.push_back(strLineName);
// 接受拖拽事件
event->setDropAction(Qt::MoveAction);
@ -338,12 +337,124 @@ void PreQTableWidget::performDrag()
FormInfo *formInfo = (FormInfo*)myWidget;//获得widget
QString strType = formInfo->m_strType;
//属性信息
QString strListPropertyText = "";
if(strType=="curveObject")
{
//曲线
}
else if(strType=="waveObject")
{
//波列
}
else if(strType=="tableObject")
{
//表格曲线
}
else if(strType=="depthObject")
{
//深度
}
else if(strType=="ganzhuangtuObject")
{
//杆状图
}
else if(strType=="JyktObject")
{
//井眼垮塌矢量图
}
else if(strType=="DenvObject")
{
//井斜方位图
}
else if(strType=="DrawImageObject")
{
//图像 成图
}
else if(strType=="SantuyibiaoObject")
{
//斜井三图一表
}
else if(strType=="CrackObject")
{
//裂缝
}
else if(strType=="JiegutextObject")
{
//气测/FMT/射孔/文本
}
else if(strType=="LogfaceObject")
{
//沉积相
QStringList listOtherProperty;
listOtherProperty.append(formInfo->m_strAliasName);//别名
listOtherProperty.append(formInfo->m_lineColor.name());//名称颜色
listOtherProperty.append(formInfo->m_curveNameFont.toString());//名称字体
//沉积相
if(formInfo->m_bDrawFac)
{
listOtherProperty.append("DrawFac");
}
else{
listOtherProperty.append("0");
}
//
if(formInfo->m_bDrawPhase)
{
listOtherProperty.append("DrawPhase");
}
else{
listOtherProperty.append("0");
}
//
if(formInfo->m_bDrawMFacName)
{
listOtherProperty.append("DrawMFacName");
}
else{
listOtherProperty.append("0");
}
strListPropertyText = listOtherProperty.join(", "); // 合并成一个字符串,元素之间用逗号加空格分隔
}
else if(strType=="MCalsObject")
{
//多臂井径
}
else if(strType=="TubingstringObject")
{
//套管组件
}
//if(strType == "curveObject" || strType == "waveObject")
{
//曲线对象(AC、BS...)
QMimeData *mimeData = new QMimeData;
// 这里需要根据你的item数据来设置mimeData例如
if(strListPropertyText == "")
{
mimeData->setText(formInfo->m_strSlfName + "#@@#"+ formInfo->m_strWellName + "#@@#" +formInfo->m_strLineName + "#@@#" + strType);
}
else
{
mimeData->setText(formInfo->m_strSlfName + "#@@#"+ formInfo->m_strWellName + "#@@#" +formInfo->m_strLineName + "#@@#" + strType + "#@@#" + strListPropertyText);
}
// 创建QDrag对象
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);

View File

@ -73,6 +73,10 @@ QMyCustomPlot::QMyCustomPlot(QWidget *parent, QString strSlfName, QString strWel
yAxis->setTickLabels(false);
xAxis2->setTickLabels(false);
xAxis2->setTickLabels(false);
xAxis->setVisible(false);
xAxis2->setVisible(false);
yAxis->setVisible(false);
yAxis2->setVisible(false);
xAxis->grid()->setVisible(false);
yAxis->grid()->setVisible(false);
@ -358,6 +362,10 @@ void QMyCustomPlot::initWave(QString strSlfName, QString strWaveName)
widget->yAxis->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
widget->xAxis2->setTickLabels(false);
widget->xAxis->setVisible(false);
widget->xAxis2->setVisible(false);
widget->yAxis->setVisible(false);
widget->yAxis2->setVisible(false);
//对调XY轴在最前面设置
QCPAxis *yAxis = widget->yAxis;

View File

@ -1853,6 +1853,8 @@ void QtProjectWidgets::onImportSingleWellLogData()
listFiles.append(file_name);
QVector<IConvertor*> vConvertor=pManager.GetSupportConvertors(listFiles[0], &DepthProgress);
// if (vConvertor.empty()) return ;
if (file_name.isEmpty())
return;
if (vConvertor.empty())
{
QMessageBox::information(NULL,"无法识别的文件",listFiles[0]);

View File

@ -180,8 +180,8 @@ void TransparentDraggableImage::setRange(double left_Low, double right_Hight, bo
left = (getLeft()/100) * mPlot->yAxis->range().upper;
width = (getWidth()/100) * mPlot->yAxis->range().upper;
double lY1 = mPlot->yAxis->range().lower+left;
double lY2 = width+left;
double lY1 = mPlot->yAxis->range().lower+left-1;
double lY2 = width+left-3;
mRect->topLeft->setCoords(left_Low, lY1);
mRect->bottomRight->setCoords(right_Hight, lY2);
@ -235,8 +235,8 @@ void TransparentDraggableImage::setRange(double left_Low, double right_Hight,dou
left = (leftPercentage/100) * mPlot->yAxis->range().upper;
width = (widthPercentage/100) * mPlot->yAxis->range().upper;
double lY1 = mPlot->yAxis->range().lower+left;
double lY2 = width+left;
double lY1 = mPlot->yAxis->range().lower+left-1;
double lY2 = width+left-3;
mRect->topLeft->setCoords(left_Low, lY1);
mRect->bottomRight->setCoords(right_Hight, lY2);

View File

@ -1,337 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.9.1, 2025-12-10T14:25:22. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{04219d0a-2df9-4f31-921d-c25f7a4fa4e5}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
<value type="int">0</value>
</data>
<data>
<variable>ProjectExplorer.Project.EditorSettings</variable>
<valuemap type="QVariantMap">
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
<value type="QString" key="language">Cpp</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
</valuemap>
</valuemap>
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
<value type="QString" key="language">QmlJS</value>
<valuemap type="QVariantMap" key="value">
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
</valuemap>
</valuemap>
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
<value type="int" key="EditorConfiguration.IndentSize">4</value>
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
<value type="int" key="EditorConfiguration.TabSize">8</value>
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
<value type="int" key="EditorConfiguration.Utf8BomBehavior">0</value>
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.PluginSettings</variable>
<valuemap type="QVariantMap">
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
<value type="QString">-fno-delayed-template-parsing</value>
</valuelist>
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.0</variable>
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.13.0 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.13.0 MSVC2017 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5130.win64_msvc2017_64_kit</value>
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Qt/Qt5.13.0/5.13.0/Src/qtsvg/src/build-svg-Desktop_Qt_5_13_0_MSVC2017_64bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Qt/Qt5.13.0/5.13.0/Src/qtsvg/src/build-svg-Desktop_Qt_5_13_0_MSVC2017_64bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:/Qt/Qt5.13.0/5.13.0/Src/qtsvg/src/build-svg-Desktop_Qt_5_13_0_MSVC2017_64bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">21</value>
</data>
<data>
<variable>Version</variable>
<value type="int">21</value>
</data>
</qtcreator>