1、修改了主程序渲染逻辑,将主窗口指向CFD主窗口

2、完成了主窗口的菜单部分渲染,未添加图标
feature/struct-menu-20241023
mzh 3 weeks ago
parent e9d697e71f
commit df5f608373

@ -0,0 +1,4 @@
TEMPLATE = subdirs
SUBDIRS += \
CFDStructGUI

@ -0,0 +1,13 @@
HEADERS += \
$$PWD/CFDStructGUIAPI.h \
$$PWD/CFDStructMainWindow.h \
SOURCES += \
$$PWD/CFDStructMainWindow.cpp \
#RESOURCES += ../qrc/qianfan.qrc
#RC_FILE += ../qrc/qianfan.rc

@ -0,0 +1,52 @@
TEMPLATE = lib
CONFIG += c++11
CONFIG += qt
TARGET = CFDStructGUI
QT += core widgets gui
DEFINES += CFDStructGUI_API
SUBDIRS += \
$$PWD/CFDStructGUI \
INCLUDEPATH += \
./ \
../ \
../../ \
include(./CFDStructGUI.pri)
win32{
INCLUDEPATH += ./ \
../ \
../../ \
../../Tools/Win64/SARibbon/include/SARibbon-2.0.1/ \
Release:CONFIG += console
Release:DESTDIR = ../../output/bin
Release:MOC_DIR = ../../generate/CFDStructGUI/release/moc
Release:RCC_DIR = ../../generate/CFDStructGUI/release/rcc
Release:UI_DIR = ../../generate/CFDStructGUI/release/qui
Release:OBJECTS_DIR = ../../generate/CFDStructGUI/release/obj
Release:LIBS += \
-L../../output/bin \
-lGUIFrame \
Debug:CONFIG += console
Debug:DESTDIR = ../../output/bin_d
Debug:MOC_DIR = ../../generate/CFDStructGUI/debug/moc
Debug:RCC_DIR = ../../generate/CFDStructGUI/debug/rcc
Debug:UI_DIR = ../../generate/CFDStructGUI/debug/qui
Debug:OBJECTS_DIR = ../../generate/CFDStructGUI/debug/obj
Debug:LIBS += \
-L../../output/bin_d \
-lGUIFrame \
Debug:LIBS += -L$$PWD/../../Tools/Win64/SARibbon/libd/ \
-lSARibbonBard \
Release:LIBS += -L$$PWD/../../Tools/Win64/SARibbon/lib/ \
-lSARibbonBar \
message("Windows CFDStructGUI generated")
}

@ -0,0 +1,14 @@
#ifndef CFDSTRUCTGUIAPI_H
#define CFDSTRUCTGUIAPI_H
#include <QtCore/QtGlobal>
#include <QDebug>
#if defined(CFDStructGUI_API)
#define CFDStructGUIAPI Q_DECL_EXPORT
#else
#define CFDStructGUIAPI Q_DECL_IMPORT
#endif
#endif // CFDSTRUCTGUIAPI_H

@ -0,0 +1,162 @@
#include "CFDStructMainWindow.h"
#include "GUIFrame/PropertyWidget.h"
#include "FITK_Kernel/FITKCore/FITKAbstractGUIObject.h"
#include "Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonMainWindow.h"
#include "Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonPannelItem.h"
#include "Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonBar.h"
#include <Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonApplicationButton.h>
#include <Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonQuickAccessBar.h>
#include <Tools/Win64/SARibbon/include/SARibbon-2.0.1/SARibbonTabBar.h>
#include <QDebug>
//CFDStructMainWindow::CFDStructMainWindow() : GUI::MainWindow()
//{
// qDebug()<<"new CFSStructMainWindow";
//}
//
//void CFDStructMainWindow::initCentralWidget() {
// qDebug() << "CFDStruct iniCentralWidget";
//
//}
using namespace GUI;
CFDStructMainWindow::CFDStructMainWindow() {
qDebug() << "new Empty CFDStructMainWindow";
initMainWindowMenu();
initCentralWidget();
initPropertyWidget();
setWindowTitle("TF-CFlow");
}
void CFDStructMainWindow::initPropertyWidget() {
//m_PropertyWidget->setWidget();
}
void CFDStructMainWindow::initMainWindowMenu() {
initApplicationButton();
addSARibbonCategoryGeometry();
addSARibbonCategoryMesh();
addSARibbonCategoryCalculation();
addSARibbonCategoryPostProcessing();
addSARibbonCategoryTool();
addSARibbonCategoryCivilAircraftTemplateLibrary();
_ribbonBar->setCurrentIndex(0);
}
void CFDStructMainWindow::addSARibbonCategoryGeometry() {
QString type = tr("Geometry");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryMesh() {
QString type = tr("Mesh");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryCalculation() {
// 创建一个新的标签
QString type = tr("Calculation");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
QAction* action = nullptr;
//pannel 定义一个区块 "仿真运行"
SARibbonPannel* pannel = gategory->addPannel(tr("Simulation Run"));
//action = getAction("actionImportGeometry");
//定义一个图标 "开始计算"
action = createAction(tr("Start Calculation"), "actionStartCalculation", ":/icons/createbox.png", tr("Start Calculation"));
//将图标放入区块中,并设置图标大小
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义区块 "导入和导出"
pannel = gategory->addPannel(tr("Import and Export"));
//定义图标"网格导入"
action = createAction(tr("Mesh Import"), "actionMeshImport", ":/icons/createbox.png", tr("Mesh Import"));
//"网格导入"加入"导入和导出"
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标"导出"
action = createAction(tr("Import"), "actionImport", ":/icons/createsphere.png", tr("Import"));
//"导出"加入"导入和导出"
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义区块"求解器设置"
pannel = gategory->addPannel(tr("Solver Settings"));
//定义图标 时间模式
action = createAction(tr("Time Mode"), "actionTimeMode", ":/icons/BoolFause.png", tr("Time Mode"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 基本模型
action = createAction(tr("Basic Model"), "actionBasicModel", ":/icons/BoolCut.png", tr("Basic Model"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 粘性模型
action = createAction(tr("Viscosity Model"), "actionViscosityModel", ":/icons/BoolCommon.png", tr("Viscosity Model"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 数值方法
action = createAction(tr("Numerical Method"), "actionNumericalMethod", ":/icons/BoolCommon.png", tr("Numerical Method"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 运动属性
action = createAction(tr("Motion Properties"), "actionMotionProperties", ":/icons/BoolCommon.png", tr("Motion Properties"));
//定义区块"边界条件和初始条件"
pannel = gategory->addPannel(tr("Boundary Conditions and Initial Conditions"));
//定义图标 边界条件
action = createAction(tr("Boundary Conditions"), "actionBoundaryConditions", ":/icons/BoolCommon.png", tr("Boundary Conditions"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 参考量
action = createAction(tr("Reference Quantities"), "actionReferenceQuantities", ":/icons/BoolCommon.png", tr("Reference Quantities"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 初始化
action = createAction(tr("Initialization"), "actionInitialization", ":/icons/BoolCommon.png", tr("Initialization"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义区块"计算控制"
pannel = gategory->addPannel(tr("Computational Control"));
//定义图标 计算控制
action = createAction(tr("Computational Control"), "actionComputational Control", ":/icons/Computational Control.png", tr("Computational Control"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义区块"监控器"
pannel = gategory->addPannel(tr("Monitors"));
//定义图标 残差
action = createAction(tr("Residuals"), "actionResiduals", ":/icons/Residuals.png", tr("Residuals"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 气动力
action = createAction(tr("Aerodynamic Forces"), "actionAerodynamicForces", ":/icons/AerodynamicForces.png", tr("Aerodynamic Forces"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//定义图标 信息汇总
action = createAction(tr("Summary"), "actionSummary", ":/icons/Summary.png", tr("Summary"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large);
}
void CFDStructMainWindow::addSARibbonCategoryPostProcessing() {
QString type = tr("Post Processing");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryTool() {
QString type = tr("Tool");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}
void CFDStructMainWindow::addSARibbonCategoryCivilAircraftTemplateLibrary() {
QString type = tr("CivilAircraft Template sLibrary");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory);
}

@ -0,0 +1,74 @@
/*********************************************************************************
* @file CFDStructMainWindow.h
* @brief
* @details
* @author mzh
* @date 2024-10-24
* @version V1.0
***********************************************************************************/
#ifndef CFDSTRUCTMAINWINDOW_H
#define CFDSTRUCTMAINWINDOW_H
#include<QDebug>
#include"CFDStructGUIAPI.h"
#include<GUIFrame/MainWindow.h>
class CFDStructGUIAPI CFDStructMainWindow : public GUI::MainWindow {
Q_OBJECT
public:
CFDStructMainWindow();
private:
/**
* @brief
* @return none*/
void init();
/**
* @brief
* @return none*/
void initPropertyWidget();
/**
* @brief
* @return none*/
void initMainWindowMenu();
/**
* @brief
* @return none*/
void addSARibbonCategoryGeometry();
/**
* @brief
* @return none*/
void addSARibbonCategoryMesh();
/**
* @brief
* @return none*/
void addSARibbonCategoryCalculation();
/**
* @brief
* @return none*/
void addSARibbonCategoryPostProcessing();
/**
* @brief
* @return none*/
void addSARibbonCategoryTool();
/**
* @brief
* @return none*/
void addSARibbonCategoryCivilAircraftTemplateLibrary();
};
#endif // CFDSTRUCTMAINWINDOW_H

@ -0,0 +1,10 @@
CFDStructMainWindow.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __cdecl GUI::MainWindow::MainWindow(class QWidget *)" (__imp_??0MainWindow@GUI@@QEAA@PEAVQWidget@@@Z),该符号在函数 "public: __cdecl CFDStructMainWindow::CFDStructMainWindow(void)" (??0CFDStructMainWindow@@QEAA@XZ) 中被引用
CFDStructMainWindow.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual __cdecl GUI::MainWindow::~MainWindow(void)" (__imp_??1MainWindow@GUI@@UEAA@XZ),该符号在函数 "public: virtual __cdecl CFDStructMainWindow::~CFDStructMainWindow(void)" (??1CFDStructMainWindow@@UEAA@XZ) 中被引用
CFDStructMainWindow.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __cdecl SARibbonMainWindow::changeEvent(class QEvent *)" (?changeEvent@SARibbonMainWindow@@MEAAXPEAVQEvent@@@Z)
CFDStructMainWindow.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __cdecl GUI::MainWindow::closeEvent(class QCloseEvent *)" (?closeEvent@MainWindow@GUI@@MEAAXPEAVQCloseEvent@@@Z)
CFDStructMainWindow.obj : error LNK2001: 无法解析的外部符号 "public: virtual bool __cdecl SARibbonMainWindow::eventFilter(class QObject *,class QEvent *)" (?eventFilter@SARibbonMainWindow@@UEAA_NPEAVQObject@@PEAVQEvent@@@Z)
CFDStructMainWindow.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __cdecl SARibbonMainWindow::resizeEvent(class QResizeEvent *)" (?resizeEvent@SARibbonMainWindow@@MEAAXPEAVQResizeEvent@@@Z)
moc_CFDStructMainWindow.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual void * __cdecl GUI::MainWindow::qt_metacast(char const *)" (__imp_?qt_metacast@MainWindow@GUI@@UEAAPEAXPEBD@Z),该符号在函数 "public: virtual void * __cdecl CFDStructMainWindow::qt_metacast(char const *)" (?qt_metacast@CFDStructMainWindow@@UEAAPEAXPEBD@Z) 中被引用
moc_CFDStructMainWindow.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: virtual int __cdecl GUI::MainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (__imp_?qt_metacall@MainWindow@GUI@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z),该符号在函数 "public: virtual int __cdecl CFDStructMainWindow::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@CFDStructMainWindow@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z) 中被引用
moc_CFDStructMainWindow.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: static struct QMetaObject const GUI::MainWindow::staticMetaObject" (__imp_?staticMetaObject@MainWindow@GUI@@2UQMetaObject@@B)
debug\\CFDStructGUI.dll : fatal error LNK1120: 9 个无法解析的外部命令

@ -0,0 +1,2 @@
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17763.0
Debug|x64|E:\0-source\AppFlow\|

@ -0,0 +1,95 @@
/****************************************************************************
** Meta object code from reading C++ file 'CFDStructMainWindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.14.2)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../CFDStructMainWindow.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'CFDStructMainWindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.14.2. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_CFDStructMainWindow_t {
QByteArrayData data[1];
char stringdata0[20];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_CFDStructMainWindow_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_CFDStructMainWindow_t qt_meta_stringdata_CFDStructMainWindow = {
{
QT_MOC_LITERAL(0, 0, 19) // "CFDStructMainWindow"
},
"CFDStructMainWindow"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_CFDStructMainWindow[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void CFDStructMainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
Q_UNUSED(_o);
Q_UNUSED(_id);
Q_UNUSED(_c);
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject CFDStructMainWindow::staticMetaObject = { {
QMetaObject::SuperData::link<GUI::MainWindow::staticMetaObject>(),
qt_meta_stringdata_CFDStructMainWindow.data,
qt_meta_data_CFDStructMainWindow,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *CFDStructMainWindow::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *CFDStructMainWindow::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_CFDStructMainWindow.stringdata0))
return static_cast<void*>(this);
return GUI::MainWindow::qt_metacast(_clname);
}
int CFDStructMainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = GUI::MainWindow::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

@ -0,0 +1,13 @@
#define _MSC_EXTENSIONS
#define _INTEGRAL_MAX_BITS 64
#define _MSC_VER 1916
#define _MSC_FULL_VER 191627051
#define _MSC_BUILD 0
#define _M_AMD64 100
#define _M_X64 100
#define _WIN64
#define _WIN32
#define _CPPRTTI
#define _DEBUG
#define _MT
#define _DLL

@ -0,0 +1 @@
This is a dummy file needed to create debug/moc_predefs.h

@ -0,0 +1,60 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB</Qt_DEFINES_>
<Qt_INCLUDEPATH_>C:\Users\PROUDC~1\AppData\Local\Temp\jzvxwbpd.jis;E:\QT\5.14.2\msvc2017_64\include;E:\QT\5.14.2\msvc2017_64\include\QtWidgets;E:\QT\5.14.2\msvc2017_64\include\QtGui;E:\QT\5.14.2\msvc2017_64\include\QtANGLE;E:\QT\5.14.2\msvc2017_64\include\QtCore;C:\Users\PROUDC~1\AppData\Local\Temp\jzvxwbpd.jis;/include;E:\QT\5.14.2\msvc2017_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_STDCPP_></Qt_STDCPP_>
<Qt_RUNTIME_>MultiThreadedDebugDLL</Qt_RUNTIME_>
<Qt_CL_OPTIONS_>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus</Qt_CL_OPTIONS_>
<Qt_LIBS_>E:\QT\5.14.2\msvc2017_64\lib\Qt5Widgetsd.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Guid.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Cored.lib;E:\QT\5.14.2\msvc2017_64\lib\qtmaind.lib;shell32.lib</Qt_LIBS_>
<Qt_LINK_OPTIONS_>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"</Qt_LINK_OPTIONS_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>E:/QT/Docs/Qt-5.14.2</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>E:/QT/5.14.2/msvc2017_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>E:/QT/5.14.2/msvc2017_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>E:/QT/5.14.2/msvc2017_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>E:/QT/5.14.2/msvc2017_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>E:/QT/5.14.2/msvc2017_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>E:/QT/5.14.2/msvc2017_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_HOST_LIBS_>
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
<QMake_QT_VERSION_>5.14.2</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);Debug</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.14.2_msvc2017_64</QtBkup_QtInstall>
<QtBkup_QtModules
>core;gui;widgets</QtBkup_QtModules>
<QtBkup_QtPathBinaries
>bin</QtBkup_QtPathBinaries>
<QtBkup_QtPathLibraryExecutables
>bin</QtBkup_QtPathLibraryExecutables>
<QtBkup_QtHeaderSearchPath
></QtBkup_QtHeaderSearchPath>
<QtBkup_QtLibrarySearchPath
></QtBkup_QtLibrarySearchPath>
<QtBkup_QtVars
>DEFINES=/Project/ItemDefinitionGroup/ClCompile/PreprocessorDefinitions;INCLUDEPATH=/Project/ItemDefinitionGroup/ClCompile/AdditionalIncludeDirectories;STDCPP=/Project/ItemDefinitionGroup/ClCompile/LanguageStandard;RUNTIME=/Project/ItemDefinitionGroup/ClCompile/RuntimeLibrary;CL_OPTIONS=/Project/ItemDefinitionGroup/ClCompile/AdditionalOptions;LIBS=/Project/ItemDefinitionGroup/Link/AdditionalDependencies;LINK_OPTIONS=/Project/ItemDefinitionGroup/Link/AdditionalOptions</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>debug</QtBkup_QtBuildConfig>
<QtVersion>5.14.2</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>14</QtVersionMinor>
<QtVersionPatch>2</QtVersionPatch>
</PropertyGroup>
</Project>

@ -0,0 +1 @@
C:\Users\PROUDC~1\AppData\Local\Temp\1daductw.3uw.designtime.props

@ -0,0 +1 @@
This is a dummy file needed to create ./moc_predefs.h

@ -0,0 +1,25 @@
QT_SYSROOT:
QT_INSTALL_PREFIX:E:/QT/5.14.2/msvc2017_64
QT_INSTALL_ARCHDATA:E:/QT/5.14.2/msvc2017_64
QT_INSTALL_DATA:E:/QT/5.14.2/msvc2017_64
QT_INSTALL_DOCS:E:/QT/Docs/Qt-5.14.2
QT_INSTALL_HEADERS:E:/QT/5.14.2/msvc2017_64/include
QT_INSTALL_LIBS:E:/QT/5.14.2/msvc2017_64/lib
QT_INSTALL_LIBEXECS:E:/QT/5.14.2/msvc2017_64/bin
QT_INSTALL_BINS:E:/QT/5.14.2/msvc2017_64/bin
QT_INSTALL_TESTS:E:/QT/5.14.2/msvc2017_64/tests
QT_INSTALL_PLUGINS:E:/QT/5.14.2/msvc2017_64/plugins
QT_INSTALL_IMPORTS:E:/QT/5.14.2/msvc2017_64/imports
QT_INSTALL_QML:E:/QT/5.14.2/msvc2017_64/qml
QT_INSTALL_TRANSLATIONS:E:/QT/5.14.2/msvc2017_64/translations
QT_INSTALL_CONFIGURATION:
QT_INSTALL_EXAMPLES:E:/QT/Examples/Qt-5.14.2
QT_INSTALL_DEMOS:E:/QT/Examples/Qt-5.14.2
QT_HOST_PREFIX:E:/QT/5.14.2/msvc2017_64
QT_HOST_DATA:E:/QT/5.14.2/msvc2017_64
QT_HOST_BINS:E:/QT/5.14.2/msvc2017_64/bin
QT_HOST_LIBS:E:/QT/5.14.2/msvc2017_64/lib
QMAKE_SPEC:win32-msvc
QMAKE_XSPEC:win32-msvc
QMAKE_VERSION:3.1
QT_VERSION:5.14.2

@ -0,0 +1 @@
Info: creating stash file C:\Users\PROUDC~1\AppData\Local\Temp\jzvxwbpd.jis\.qmake.stash

@ -0,0 +1,2 @@
CONFIG += no_fixpath
QT += core gui widgets

@ -0,0 +1,60 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB</Qt_DEFINES_>
<Qt_INCLUDEPATH_>C:\Users\PROUDC~1\AppData\Local\Temp\jzvxwbpd.jis;E:\QT\5.14.2\msvc2017_64\include;E:\QT\5.14.2\msvc2017_64\include\QtWidgets;E:\QT\5.14.2\msvc2017_64\include\QtGui;E:\QT\5.14.2\msvc2017_64\include\QtANGLE;E:\QT\5.14.2\msvc2017_64\include\QtCore;C:\Users\PROUDC~1\AppData\Local\Temp\jzvxwbpd.jis;/include;E:\QT\5.14.2\msvc2017_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_STDCPP_></Qt_STDCPP_>
<Qt_RUNTIME_>MultiThreadedDebugDLL</Qt_RUNTIME_>
<Qt_CL_OPTIONS_>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus</Qt_CL_OPTIONS_>
<Qt_LIBS_>E:\QT\5.14.2\msvc2017_64\lib\Qt5Widgetsd.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Guid.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Cored.lib;E:\QT\5.14.2\msvc2017_64\lib\qtmaind.lib;shell32.lib</Qt_LIBS_>
<Qt_LINK_OPTIONS_>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"</Qt_LINK_OPTIONS_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>E:/QT/Docs/Qt-5.14.2</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>E:/QT/5.14.2/msvc2017_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>E:/QT/5.14.2/msvc2017_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>E:/QT/5.14.2/msvc2017_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>E:/QT/5.14.2/msvc2017_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>E:/QT/5.14.2/msvc2017_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>E:/QT/5.14.2/msvc2017_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_HOST_LIBS_>
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
<QMake_QT_VERSION_>5.14.2</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);Debug</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.14.2_msvc2017_64</QtBkup_QtInstall>
<QtBkup_QtModules
>core;gui;widgets</QtBkup_QtModules>
<QtBkup_QtPathBinaries
>bin</QtBkup_QtPathBinaries>
<QtBkup_QtPathLibraryExecutables
>bin</QtBkup_QtPathLibraryExecutables>
<QtBkup_QtHeaderSearchPath
></QtBkup_QtHeaderSearchPath>
<QtBkup_QtLibrarySearchPath
></QtBkup_QtLibrarySearchPath>
<QtBkup_QtVars
>DEFINES=/Project/ItemDefinitionGroup/ClCompile/PreprocessorDefinitions;INCLUDEPATH=/Project/ItemDefinitionGroup/ClCompile/AdditionalIncludeDirectories;STDCPP=/Project/ItemDefinitionGroup/ClCompile/LanguageStandard;RUNTIME=/Project/ItemDefinitionGroup/ClCompile/RuntimeLibrary;CL_OPTIONS=/Project/ItemDefinitionGroup/ClCompile/AdditionalOptions;LIBS=/Project/ItemDefinitionGroup/Link/AdditionalDependencies;LINK_OPTIONS=/Project/ItemDefinitionGroup/Link/AdditionalOptions</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>debug</QtBkup_QtBuildConfig>
<QtVersion>5.14.2</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>14</QtVersionMinor>
<QtVersionPatch>2</QtVersionPatch>
</PropertyGroup>
</Project>

@ -0,0 +1,839 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
****************************************************************************
**
** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt VS Tools.
**
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************
-->
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="QUuid">
<DisplayString>{{{data1,Xb}-{data2,Xb}-{data3,Xb}-{(data4[0]),nvoXb}{(data4[1]),nvoXb}-{(data4[2]),nvoXb}{(data4[3]),nvoXb}{(data4[4]),nvoXb}{(data4[5]),nvoXb}{(data4[6]),nvoXb}{(data4[7]),nvoXb}}}</DisplayString>
</Type>
<Type Name="QPoint">
<AlternativeType Name="QPointF"/>
<DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
</Expand>
</Type>
<Type Name="QRect">
<DisplayString>{{ x = {x1}, y = {y1}, width = {x2 - x1 + 1}, height = {y2 - y1 + 1} }}</DisplayString>
<Expand>
<Item Name="[x]">x1</Item>
<Item Name="[y]">y1</Item>
<Item Name="[width]">x2 - x1 + 1</Item>
<Item Name="[height]">y2 - y1 + 1</Item>
</Expand>
</Type>
<Type Name="QRectF">
<DisplayString>{{ x = {xp}, y = {yp}, width = {w}, height = {h} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[width]">w</Item>
<Item Name="[height]">h</Item>
</Expand>
</Type>
<Type Name="QSize">
<AlternativeType Name="QSizeF"/>
<DisplayString>{{ width = {wd}, height = {ht} }}</DisplayString>
<Expand>
<Item Name="[width]">wd</Item>
<Item Name="[height]">ht</Item>
</Expand>
</Type>
<Type Name="QLine">
<AlternativeType Name="QLineF"/>
<DisplayString>{{ start point = {pt1}, end point = {pt2} }}</DisplayString>
<Expand>
<Synthetic Name="[start point]">
<DisplayString>{pt1}</DisplayString>
<Expand>
<ExpandedItem>pt1</ExpandedItem>
</Expand>
</Synthetic>
<Synthetic Name="[end point]">
<DisplayString>{pt2}</DisplayString>
<Expand>
<ExpandedItem>pt2</ExpandedItem>
</Expand>
</Synthetic>
</Expand>
</Type>
<Type Name="QPolygon">
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>(QPoint*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QPolygonF">
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[closed]">
d-&gt;size &gt; 0
&amp;&amp; ((((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[0]).xp
== (((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[d-&gt;size - 1]).xp)
&amp;&amp; ((((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[0]).yp
== (((QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)[d-&gt;size - 1]).yp)
</Item>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>(QPointF*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name ="QVector2D">
<DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
</Expand>
</Type>
<Type Name ="QVector3D">
<DisplayString>{{ x = {xp}, y = {yp}, z = {zp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[z]">zp</Item>
</Expand>
</Type>
<Type Name ="QVector4D">
<DisplayString>{{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }}</DisplayString>
<Expand>
<Item Name="[x]">xp</Item>
<Item Name="[y]">yp</Item>
<Item Name="[z]">zp</Item>
<Item Name="[w]">wp</Item>
</Expand>
</Type>
<Type Name ="QMatrix">
<DisplayString>
{{ m11 = {_m11}, m12 = {_m12}, m21 = {_m21}, m22 = {_m22}, ... }}
</DisplayString>
<Expand>
<Item Name="[m11]">_m11</Item>
<Item Name="[m12]">_m12</Item>
<Item Name="[m21]">_m21</Item>
<Item Name="[m22]">_m22</Item>
<Item Name="[dx]">_dx</Item>
<Item Name="[dy]">_dy</Item>
</Expand>
</Type>
<Type Name ="QMatrix4x4">
<DisplayString>
{{ m11 = {m[0][0]}, m12 = {m[1][0]}, m13 = {m[2][0]}, m14 = {m[3][0]}, ... }}
</DisplayString>
<Expand>
<Item Name="[m11]">m[0][0]</Item>
<Item Name="[m12]">m[1][0]</Item>
<Item Name="[m13]">m[2][0]</Item>
<Item Name="[m14]">m[3][0]</Item>
<Item Name="[m21]">m[0][1]</Item>
<Item Name="[m22]">m[1][1]</Item>
<Item Name="[m23]">m[2][1]</Item>
<Item Name="[m24]">m[3][1]</Item>
<Item Name="[m31]">m[0][2]</Item>
<Item Name="[m32]">m[1][2]</Item>
<Item Name="[m33]">m[2][2]</Item>
<Item Name="[m34]">m[3][2]</Item>
<Item Name="[m41]">m[0][3]</Item>
<Item Name="[m42]">m[1][3]</Item>
<Item Name="[m43]">m[2][3]</Item>
<Item Name="[m44]">m[3][3]</Item>
</Expand>
</Type>
<Type Name="QSizePolicy">
<DisplayString>
{{ horizontal = {static_cast&lt;Policy&gt;(bits.horPolicy)}, vertical = {static_cast&lt;Policy&gt;(bits.verPolicy)}, type = {ControlType(1 &lt;&lt; bits.ctype)} }}
</DisplayString>
<Expand>
<Synthetic Name="[vertical policy]">
<DisplayString>QSizePolicy::Policy::{static_cast&lt;Policy&gt;(bits.verPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[horizontal policy]">
<DisplayString>QSizePolicy::Policy::{static_cast&lt;Policy&gt;(bits.horPolicy)}</DisplayString>
</Synthetic>
<Synthetic Name="[control type]">
<DisplayString>QSizePolicy::ControlType::{ControlType(1 &lt;&lt; bits.ctype)}</DisplayString>
</Synthetic>
<Synthetic Name="[expanding directions]">
<DisplayString
Condition="(static_cast&lt;Policy&gt;(bits.verPolicy) &amp; ExpandFlag)">
Qt::Vertical (2)
</DisplayString>
<DisplayString
Condition="(static_cast&lt;Policy&gt;(bits.horPolicy) &amp; ExpandFlag)">
Qt::Horizontal (1)
</DisplayString>
</Synthetic>
<Item Name="[vertical stretch]">static_cast&lt;int&gt;(bits.verStretch)</Item>
<Item Name="[horizontal stretch]">static_cast&lt;int&gt;(bits.horStretch)</Item>
<Item Name="[has height for width]">bits.hfw == 1</Item>
<Item Name="[has width for height]">bits.wfh == 1</Item>
</Expand>
</Type>
<Type Name="QChar">
<DisplayString>{ucs,c}</DisplayString>
<StringView>ucs,c</StringView>
<Expand>
<Item Name="[latin 1]">ucs > 0xff ? '\0' : char(ucs),c</Item>
<Item Name="[unicode]">ucs,c</Item>
</Expand>
</Type>
<Type Name="QString">
<DisplayString>{((reinterpret_cast&lt;unsigned short*&gt;(d)) + d-&gt;offset / 2),sub}</DisplayString>
<StringView>((reinterpret_cast&lt;unsigned short*&gt;(d)) + d-&gt;offset / 2),sub</StringView>
<Expand>
<Item Name="[size]">d-&gt;size</Item>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>((reinterpret_cast&lt;unsigned short*&gt;(d)) + d-&gt;offset / 2),c</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QStringRef">
<Intrinsic Name="offset" Expression="(reinterpret_cast&lt;char16_t*&gt;(m_string-&gt;d))
+ m_string-&gt;d->offset / 2" />
<DisplayString Condition="m_string == nullptr">{m_string,[m_size]} u""</DisplayString>
<DisplayString Condition="m_string != nullptr">{offset() + m_position,[m_size]}</DisplayString>
<Expand>
<Item Name="[position]" ExcludeView="simple">m_position</Item>
<Item Name="[size]" ExcludeView="simple">m_size</Item>
<ArrayItems Condition="m_string != nullptr">
<Size>m_size</Size>
<ValuePointer>offset()+m_position</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QStringView">
<DisplayString>{m_data,[m_size]}</DisplayString>
<StringView>m_data,[m_size]</StringView>
<Expand>
<Item Name="[size]" ExcludeView="simple">m_size</Item>
<ArrayItems>
<Size>m_size</Size>
<ValuePointer>m_data</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QByteArray">
<DisplayString>{((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset),sb}</DisplayString>
<StringView>((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset),sb</StringView>
<Expand>
<Item Name="[size]">d-&gt;size</Item>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset),c</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QUrl">
<Intrinsic Name="isEmpty" Expression="size==0">
<Parameter Name="size" Type="int"/>
</Intrinsic>
<Intrinsic Name="memberOffset" Expression="sizeof(QAtomicInt) + sizeof(int) + (sizeof(QString) * count)">
<Parameter Name="count" Type="int"/>
</Intrinsic>
<Intrinsic Name="scheme" Expression="*((QString*)(((char*)(d) + memberOffset(0))))" />
<Intrinsic Name="username" Expression="*((QString*)(((char*)(d) + memberOffset(1))))" />
<Intrinsic Name="password" Expression="*((QString*)(((char*)(d) + memberOffset(2))))" />
<Intrinsic Name="host" Expression="*((QString*)(((char*)(d) + memberOffset(3))))" />
<Intrinsic Name="path" Expression="*((QString*)(((char*)(d) + memberOffset(4))))" />
<Intrinsic Name="query" Expression="*((QString*)(((char*)(d) + memberOffset(5))))" />
<Intrinsic Name="fragment" Expression="*((QString*)(((char*)(d) + memberOffset(6))))" />
<DisplayString Condition="!isEmpty(scheme().d-&gt;size)">{scheme()}://{host()}{path()}</DisplayString>
<DisplayString Condition="isEmpty(scheme().d-&gt;size)">{path()}</DisplayString>
<Expand>
<Item Name="[scheme]">scheme()</Item>
<Item Name="[username]">username()</Item>
<Item Name="[password]">password()</Item>
<Item Name="[host]">host()</Item>
<Item Name="[path]">path()</Item>
<Item Name="[query]">query()</Item>
<Item Name="[fragment]">fragment()</Item>
</Expand>
</Type>
<Type Name="QBitArray">
<DisplayString>{{ size = {(d.d-&gt;size &lt;&lt; 3) - *((reinterpret_cast&lt;char*&gt;(d.d)) + d.d-&gt;offset)} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d.d-&gt;ref.atomic._q_value</Item>
<IndexListItems>
<Size>(d.d-&gt;size &lt;&lt; 3) - *((reinterpret_cast&lt;char*&gt;(d.d)) + d.d-&gt;offset)</Size>
<ValueNode>
(*(reinterpret_cast&lt;const unsigned char*&gt;((reinterpret_cast&lt;char*&gt;(d.d)) + d.d-&gt;offset) + 1
+ ($i &gt;&gt; 3)) &amp; (1 &lt;&lt; ($i &amp; 7))) != 0
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="QVarLengthArray&lt;*&gt;">
<AlternativeType Name="QVarLengthArray&lt;*, int&gt;"/>
<DisplayString>{{ size = {s} }}</DisplayString>
<Expand>
<Item Name="[capacity]">a</Item>
<ArrayItems>
<Size>s</Size>
<ValuePointer>ptr</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QDate">
<DisplayString>{{ julian day = {jd} }}</DisplayString>
<Expand></Expand>
</Type>
<Type Name="QTime">
<DisplayString
Condition="mds == 1">{{ millisecond = {mds} }}</DisplayString>
<DisplayString
Condition="mds != 1">{{ milliseconds = {mds} }}</DisplayString>
<Expand>
<Item Name="[hour]"
Condition="(mds / 3600000) == 1">mds / 3600000, d</Item>
<Item Name="[hours]"
Condition="(mds / 3600000) != 1">mds / 3600000, d</Item>
<Item Name="[minute]"
Condition="((mds % 3600000) / 60000) == 1">(mds % 3600000) / 60000, d</Item>
<Item Name="[minutes]"
Condition="((mds % 3600000) / 60000) != 1">(mds % 3600000) / 60000, d</Item>
<Item Name="[second]"
Condition="((mds / 1000) % 60) == 1">(mds / 1000) % 60, d</Item>
<Item Name="[seconds]"
Condition="((mds / 1000) % 60) != 1">(mds / 1000) % 60, d</Item>
<Item Name="[millisecond]"
Condition="(mds % 1000) == 1">mds % 1000, d</Item>
<Item Name="[milliseconds]"
Condition="(mds % 1000) != 1">mds % 1000, d</Item>
</Expand>
</Type>
<Type Name="QRegularExpression">
<DisplayString>{d.pattern}</DisplayString>
</Type>
<Type Name="QSharedData">
<Expand>
<Item Name="[referenced]">ref._q_value</Item>
</Expand>
</Type>
<Type Name="QSharedPointer&lt;*&gt;">
<DisplayString>strong reference to shared pointer of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">value == 0</Item>
<Item Name="[weak referenced]">d-&gt;weakref._q_value</Item>
<Item Name="[strong referenced]">d-&gt;strongref._q_value</Item>
</Expand>
</Type>
<Type Name="QSharedDataPointer&lt;*&gt;">
<DisplayString>pointer to implicit shared object of type {"$T1"}</DisplayString>
<Expand>
<ExpandedItem>d</ExpandedItem>
</Expand>
</Type>
<Type Name="QExplicitlySharedDataPointer&lt;*&gt;">
<DisplayString>pointer to explicit shared object of type {"$T1"}</DisplayString>
<Expand>
<ExpandedItem>d</ExpandedItem>
</Expand>
</Type>
<Type Name="QPointer&lt;*&gt;">
<DisplayString>guarded pointer to subclass of QObject of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">wp.d == 0 || wp.d-&gt;strongref._q_value == 0 || wp.value == 0</Item>
</Expand>
</Type>
<Type Name="QWeakPointer&lt;*&gt;">
<DisplayString>weak reference to shared pointer of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">d == 0 || d-&gt;strongref._q_value == 0 || value == 0</Item>
<Item Name="[weak referenced]">d-&gt;weakref._q_value</Item>
<Item Name="[strong referenced]">d-&gt;strongref._q_value</Item>
</Expand>
</Type>
<Type Name="QScopedPointer&lt;*&gt;">
<DisplayString>scoped pointer to a dynamically allocated object of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">!d</Item>
</Expand>
</Type>
<Type Name="QScopedArrayPointer&lt;*&gt;">
<DisplayString>scoped pointer to dynamically allocated array of objects of type {"$T1"}</DisplayString>
<Expand>
<Item Name="[is null]">!d</Item>
</Expand>
</Type>
<Type Name="QPair&lt;*,*&gt;">
<DisplayString>({first}, {second})</DisplayString>
<Expand>
<Item Name="[first]">first</Item>
<Item Name="[second]">second</Item>
</Expand>
</Type>
<Type Name="QVector&lt;*&gt;">
<AlternativeType Name="QStack&lt;*&gt;"></AlternativeType>
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<ArrayItems>
<Size>d-&gt;size</Size>
<ValuePointer>($T1*)((reinterpret_cast&lt;char*&gt;(d)) + d-&gt;offset)</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="QList&lt;*&gt;">
<AlternativeType Name="QQueue&lt;*&gt;"></AlternativeType>
<DisplayString>{{ size = {d-&gt;end - d-&gt;begin} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<IndexListItems>
<Size>d-&gt;end - d-&gt;begin</Size>
<ValueNode>*reinterpret_cast&lt;$T1*&gt;((sizeof($T1) &gt; sizeof(void*))
? reinterpret_cast&lt;Node*&gt;(d-&gt;array + d-&gt;begin + $i)-&gt;v
: reinterpret_cast&lt;$T1*&gt;(d-&gt;array + d-&gt;begin + $i))
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="QStringList">
<DisplayString>{{ size = {d-&gt;end - d-&gt;begin} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<IndexListItems>
<Size>d-&gt;end - d-&gt;begin</Size>
<ValueNode>
*reinterpret_cast&lt;QString*&gt;((sizeof(QString) &gt; sizeof(void*))
? reinterpret_cast&lt;Node*&gt;(d-&gt;array + d-&gt;begin + $i)-&gt;v
: reinterpret_cast&lt;QString*&gt;(d-&gt;array + d-&gt;begin + $i))
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="QList&lt;QVariant&gt;">
<DisplayString>{{ size = {d-&gt;end - d-&gt;begin} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<IndexListItems>
<Size>d-&gt;end - d-&gt;begin</Size>
<ValueNode>
*reinterpret_cast&lt;QVariant*&gt;((sizeof(QVariant) &gt; sizeof(void*))
? reinterpret_cast&lt;Node*&gt;(d-&gt;array + d-&gt;begin + $i)-&gt;v
: reinterpret_cast&lt;QVariant*&gt;(d-&gt;array + d-&gt;begin + $i))
</ValueNode>
</IndexListItems>
</Expand>
</Type>
<Type Name="QLinkedList&lt;*&gt;">
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<LinkedListItems>
<Size>d-&gt;size</Size>
<HeadPointer>d-&gt;n</HeadPointer>
<NextPointer>n</NextPointer>
<ValueNode>(*(QLinkedListNode&lt;$T1&gt;*)this).t</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QMapNode&lt;*,*&gt;">
<DisplayString>({key}, {value})</DisplayString>
<Expand>
<Item Name="[key]">key</Item>
<Item Name="[value]">value</Item>
</Expand>
</Type>
<Type Name="QMap&lt;*,*&gt;">
<AlternativeType Name="QMultiMap&lt;*,*&gt;"/>
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[referenced]">d-&gt;ref.atomic._q_value</Item>
<TreeItems>
<Size>d-&gt;size</Size>
<HeadPointer>d-&gt;header.left</HeadPointer>
<LeftPointer>left</LeftPointer>
<RightPointer>right</RightPointer>
<ValueNode>*((QMapNode&lt;$T1,$T2&gt;*)this)</ValueNode>
</TreeItems>
</Expand>
</Type>
<Type Name="QHashNode&lt;*,*&gt;">
<DisplayString Condition="next == 0">(empty)</DisplayString>
<DisplayString Condition="next != 0">({key}, {value})</DisplayString>
<Expand>
<Item Name="[key]" Condition="next != 0">key</Item>
<Item Name="[value]" Condition="next != 0">value</Item>
<Item Name="[next]" Condition="next != 0">next</Item>
</Expand>
</Type>
<Type Name="QHash&lt;*,*&gt;">
<AlternativeType Name="QMultiHash&lt;*,*&gt;"/>
<DisplayString>{{ size = {d-&gt;size} }}</DisplayString>
<Expand>
<ArrayItems IncludeView="buckets">
<Size>d-&gt;numBuckets</Size>
<ValuePointer>reinterpret_cast&lt;Node **&gt;(d-&gt;buckets)</ValuePointer>
</ArrayItems>
<CustomListItems ExcludeView="buckets">
<Variable Name="n" InitialValue="d-&gt;numBuckets"/>
<Variable Name="bucket" InitialValue="d-&gt;buckets"/>
<Variable Name="node" InitialValue="d-&gt;buckets[0]"/>
<Variable Name="keyValuePair" InitialValue="reinterpret_cast&lt;Node *&gt;(0)"/>
<Size>d-&gt;size</Size>
<Loop>
<Break Condition="n == 0"/>
<Exec>node = *(bucket++)</Exec>
<Exec>--n</Exec>
<Loop>
<Break Condition="!node || !node-&gt;next"/>
<Exec>keyValuePair = reinterpret_cast&lt;Node *&gt;(node)</Exec>
<Item Name="[{keyValuePair-&gt;key}]">keyValuePair-&gt;value</Item>
<Exec>node = node-&gt;next</Exec>
</Loop>
</Loop>
</CustomListItems>
</Expand>
</Type>
<Type Name="QHashNode&lt;*,QHashDummyValue&gt;">
<DisplayString Condition="next == 0">(empty)</DisplayString>
<DisplayString Condition="next != 0">({key})</DisplayString>
<Expand>
<Item Name="[key]" Condition="next != 0">key</Item>
</Expand>
</Type>
<Type Name="QSet&lt;*&gt;">
<DisplayString>{{ size = {q_hash.d-&gt;size} }}</DisplayString>
<Expand>
<ExpandedItem>q_hash</ExpandedItem>
</Expand>
</Type>
<Type Name="QCache&lt;*,*&gt;::Node">
<DisplayString>({*keyPtr}, {*t})</DisplayString>
<Expand>
<Item Name="[key]">*keyPtr</Item>
<Item Name="[value]">*t</Item>
</Expand>
</Type>
<Type Name="QCache&lt;*,*&gt;">
<DisplayString>{{ size = {hash.d-&gt;size} }}</DisplayString>
<Expand>
<Item Name="[max coast]">mx</Item>
<Item Name="[total coast]">total</Item>
<Item Name="[referenced]">hash.d-&gt;ref.atomic._q_value</Item>
<LinkedListItems>
<Size>hash.d-&gt;size</Size>
<HeadPointer>f</HeadPointer>
<NextPointer>n</NextPointer>
<ValueNode>*((Node*)this)</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="QStandardItemPrivate">
<Intrinsic Name="memberOffset" Expression="sizeof(QStandardItemModel *)
+ sizeof(QStandardItem *)
+ sizeof(int *)
+ sizeof(int *)
+ (sizeof(int) * count)">
<Parameter Name="count" Type="int"/>
</Intrinsic>
<Intrinsic Name="rows" Expression="*((int*)(((char*)(this)) + memberOffset(0)))" />
<Intrinsic Name="columns" Expression="*((int*)(((char*)(this)) + memberOffset(1)))" />
</Type>
<Type Name="QStandardItem">
<DisplayString>{{ row count = {(*d_ptr.d).rows()}, column count = {(*d_ptr.d).columns()} }}</DisplayString>
<Expand>
<Item Name="[d]">d_ptr.d,!</Item>
<Item Name="[row count]">(*d_ptr.d).rows()</Item>
<Item Name="[column count]">(*d_ptr.d).columns()</Item>
</Expand>
</Type>
<Type Name="QVariant">
<!--Region DisplayString QVariant-->
<DisplayString Condition="d.type == QMetaType::UnknownType">Invalid</DisplayString>
<DisplayString Condition="d.type == QMetaType::Bool">{d.data.b}</DisplayString>
<DisplayString Condition="d.type == QMetaType::Int">{d.data.i}</DisplayString>
<DisplayString Condition="d.type == QMetaType::UInt">{d.data.u}</DisplayString>
<DisplayString Condition="d.type == QMetaType::LongLong">{d.data.ll}</DisplayString>
<DisplayString Condition="d.type == QMetaType::ULongLong">{d.data.ull}</DisplayString>
<DisplayString Condition="d.type == QMetaType::Double">{d.data.d}</DisplayString>
<DisplayString Condition="d.type == QMetaType::QChar">{d.data.c}</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantMap">
{*((QMap&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantList">
{*((QList&lt;QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QString">
{*((QString*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QStringList">
{*((QStringList*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QByteArray">
{*((QByteArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBitArray">
{*((QBitArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QDate">
{*((QDate*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTime">
{*((QTime*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QDateTime">DateTime</DisplayString>
<DisplayString Condition="d.type == QMetaType::QUrl">Url</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLocale">Locale</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRect">
{*((QRect*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRectF">
{*((QRectF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSize">
{*((QSize*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSizeF">
{*((QSizeF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLine">
{*((QLine*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QLineF">
{*((QLineF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPoint">
{*((QPoint*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPointF">
{*((QPointF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegExp">RegExp</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegularExpression">RegularExpression</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVariantHash">
{*((QHash&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))}
</DisplayString>
<DisplayString Condition="d.type == QMetaType::QEasingCurve">EasingCurve</DisplayString>
<DisplayString Condition="d.type == QMetaType::QUuid">Uuid</DisplayString>
<DisplayString Condition="d.type == QMetaType::QModelIndex">ModelIndex</DisplayString>
<DisplayString Condition="d.type == QMetaType::LastCoreType">LastCoreType</DisplayString>
<DisplayString Condition="d.type == QMetaType::QFont">Font</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPixmap">Pixmap</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBrush">Brush</DisplayString>
<DisplayString Condition="d.type == QMetaType::QColor">Color</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPalette">Palette</DisplayString>
<DisplayString Condition="d.type == QMetaType::QImage">Image</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPolygon">Polygon</DisplayString>
<DisplayString Condition="d.type == QMetaType::QRegion">Region</DisplayString>
<DisplayString Condition="d.type == QMetaType::QBitmap">Bitmap</DisplayString>
<DisplayString Condition="d.type == QMetaType::QCursor">Cursor</DisplayString>
<DisplayString Condition="d.type == QMetaType::QKeySequence">KeySequence</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPen">Pen</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTextLength">TextLength</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTextFormat">TextFormat</DisplayString>
<DisplayString Condition="d.type == QMetaType::QMatrix">Matrix</DisplayString>
<DisplayString Condition="d.type == QMetaType::QTransform">Transform</DisplayString>
<DisplayString Condition="d.type == QMetaType::QMatrix4x4">Matrix4x4</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVector2D">Vector2D</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVector3D">Vector3D</DisplayString>
<DisplayString Condition="d.type == QMetaType::QVector4D">Vector4D</DisplayString>
<DisplayString Condition="d.type == QMetaType::QQuaternion">Quaternion</DisplayString>
<DisplayString Condition="d.type == QMetaType::QPolygonF">PolygonF</DisplayString>
<DisplayString Condition="d.type == QMetaType::QIcon">Icon</DisplayString>
<DisplayString Condition="d.type == QMetaType::LastGuiType">LastGuiType</DisplayString>
<DisplayString Condition="d.type == QMetaType::QSizePolicy">SizePolicy</DisplayString>
<DisplayString Condition="d.type == QMetaType::User">UserType</DisplayString>
<DisplayString Condition="d.type == 0xffffffff">LastType</DisplayString>
<!--End region DisplayString QVariant-->
<!--Region DisplayView QVariant-->
<StringView Condition="d.type == QMetaType::QChar">d.data.c</StringView>
<StringView Condition="d.type == QMetaType::QString">
*((QString*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</StringView>
<StringView Condition="d.type == QMetaType::QByteArray">
*((QByteArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</StringView>
<!--End region DisplayView QVariant-->
<!--Region Expand QVariant-->
<Expand>
<ExpandedItem Condition="d.type == QMetaType::QVariantMap">
*((QMap&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QVariantList">
*((QList&lt;QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QString">
*((QString*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QStringList">
*((QStringList*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QByteArray">
*((QByteArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QBitArray">
*((QBitArray*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QDate">
*((QDate*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QTime">
*((QTime*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QRect">
*((QRect*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QRectF">
*((QRectF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QSize">
*((QSize*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QSizeF">
*((QSizeF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QLine">
*((QLine*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QLineF">
*((QLineF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QPoint">
*((QPoint*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QPointF">
*((QPointF*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
<ExpandedItem Condition="d.type == QMetaType::QVariantHash">
*((QHash&lt;QString,QVariant&gt;*)(d.is_shared ? d.data.shared-&gt;ptr
: reinterpret_cast&lt;const void *&gt;(&amp;d.data.ptr)))
</ExpandedItem>
</Expand>
<!--End region Expand QVariant-->
</Type>
</AutoVisualizer>

@ -0,0 +1 @@
This is a dummy file needed to create release/moc_predefs.h

@ -0,0 +1,60 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB</Qt_DEFINES_>
<Qt_INCLUDEPATH_>C:\Users\PROUDC~1\AppData\Local\Temp\4wiyomts.2iv;E:\QT\5.14.2\msvc2017_64\include;E:\QT\5.14.2\msvc2017_64\include\QtWidgets;E:\QT\5.14.2\msvc2017_64\include\QtGui;E:\QT\5.14.2\msvc2017_64\include\QtANGLE;E:\QT\5.14.2\msvc2017_64\include\QtCore;C:\Users\PROUDC~1\AppData\Local\Temp\4wiyomts.2iv;/include;E:\QT\5.14.2\msvc2017_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_STDCPP_></Qt_STDCPP_>
<Qt_RUNTIME_>MultiThreadedDLL</Qt_RUNTIME_>
<Qt_CL_OPTIONS_>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus</Qt_CL_OPTIONS_>
<Qt_LIBS_>E:\QT\5.14.2\msvc2017_64\lib\Qt5Widgets.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Gui.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Core.lib;E:\QT\5.14.2\msvc2017_64\lib\qtmain.lib;shell32.lib</Qt_LIBS_>
<Qt_LINK_OPTIONS_>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"</Qt_LINK_OPTIONS_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>E:/QT/Docs/Qt-5.14.2</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>E:/QT/5.14.2/msvc2017_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>E:/QT/5.14.2/msvc2017_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>E:/QT/5.14.2/msvc2017_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>E:/QT/5.14.2/msvc2017_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>E:/QT/5.14.2/msvc2017_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>E:/QT/5.14.2/msvc2017_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_HOST_LIBS_>
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
<QMake_QT_VERSION_>5.14.2</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);Release</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.14.2_msvc2017_64</QtBkup_QtInstall>
<QtBkup_QtModules
>core;gui;widgets</QtBkup_QtModules>
<QtBkup_QtPathBinaries
>bin</QtBkup_QtPathBinaries>
<QtBkup_QtPathLibraryExecutables
>bin</QtBkup_QtPathLibraryExecutables>
<QtBkup_QtHeaderSearchPath
></QtBkup_QtHeaderSearchPath>
<QtBkup_QtLibrarySearchPath
></QtBkup_QtLibrarySearchPath>
<QtBkup_QtVars
>DEFINES=/Project/ItemDefinitionGroup/ClCompile/PreprocessorDefinitions;INCLUDEPATH=/Project/ItemDefinitionGroup/ClCompile/AdditionalIncludeDirectories;STDCPP=/Project/ItemDefinitionGroup/ClCompile/LanguageStandard;RUNTIME=/Project/ItemDefinitionGroup/ClCompile/RuntimeLibrary;CL_OPTIONS=/Project/ItemDefinitionGroup/ClCompile/AdditionalOptions;LIBS=/Project/ItemDefinitionGroup/Link/AdditionalDependencies;LINK_OPTIONS=/Project/ItemDefinitionGroup/Link/AdditionalOptions</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>release</QtBkup_QtBuildConfig>
<QtVersion>5.14.2</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>14</QtVersionMinor>
<QtVersionPatch>2</QtVersionPatch>
</PropertyGroup>
</Project>

@ -0,0 +1 @@
This is a dummy file needed to create ./moc_predefs.h

@ -0,0 +1,25 @@
QT_SYSROOT:
QT_INSTALL_PREFIX:E:/QT/5.14.2/msvc2017_64
QT_INSTALL_ARCHDATA:E:/QT/5.14.2/msvc2017_64
QT_INSTALL_DATA:E:/QT/5.14.2/msvc2017_64
QT_INSTALL_DOCS:E:/QT/Docs/Qt-5.14.2
QT_INSTALL_HEADERS:E:/QT/5.14.2/msvc2017_64/include
QT_INSTALL_LIBS:E:/QT/5.14.2/msvc2017_64/lib
QT_INSTALL_LIBEXECS:E:/QT/5.14.2/msvc2017_64/bin
QT_INSTALL_BINS:E:/QT/5.14.2/msvc2017_64/bin
QT_INSTALL_TESTS:E:/QT/5.14.2/msvc2017_64/tests
QT_INSTALL_PLUGINS:E:/QT/5.14.2/msvc2017_64/plugins
QT_INSTALL_IMPORTS:E:/QT/5.14.2/msvc2017_64/imports
QT_INSTALL_QML:E:/QT/5.14.2/msvc2017_64/qml
QT_INSTALL_TRANSLATIONS:E:/QT/5.14.2/msvc2017_64/translations
QT_INSTALL_CONFIGURATION:
QT_INSTALL_EXAMPLES:E:/QT/Examples/Qt-5.14.2
QT_INSTALL_DEMOS:E:/QT/Examples/Qt-5.14.2
QT_HOST_PREFIX:E:/QT/5.14.2/msvc2017_64
QT_HOST_DATA:E:/QT/5.14.2/msvc2017_64
QT_HOST_BINS:E:/QT/5.14.2/msvc2017_64/bin
QT_HOST_LIBS:E:/QT/5.14.2/msvc2017_64/lib
QMAKE_SPEC:win32-msvc
QMAKE_XSPEC:win32-msvc
QMAKE_VERSION:3.1
QT_VERSION:5.14.2

@ -0,0 +1 @@
Info: creating stash file C:\Users\PROUDC~1\AppData\Local\Temp\4wiyomts.2iv\.qmake.stash

@ -0,0 +1,2 @@
CONFIG += no_fixpath
QT += core gui widgets

@ -0,0 +1,60 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB</Qt_DEFINES_>
<Qt_INCLUDEPATH_>C:\Users\PROUDC~1\AppData\Local\Temp\4wiyomts.2iv;E:\QT\5.14.2\msvc2017_64\include;E:\QT\5.14.2\msvc2017_64\include\QtWidgets;E:\QT\5.14.2\msvc2017_64\include\QtGui;E:\QT\5.14.2\msvc2017_64\include\QtANGLE;E:\QT\5.14.2\msvc2017_64\include\QtCore;C:\Users\PROUDC~1\AppData\Local\Temp\4wiyomts.2iv;/include;E:\QT\5.14.2\msvc2017_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_STDCPP_></Qt_STDCPP_>
<Qt_RUNTIME_>MultiThreadedDLL</Qt_RUNTIME_>
<Qt_CL_OPTIONS_>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus</Qt_CL_OPTIONS_>
<Qt_LIBS_>E:\QT\5.14.2\msvc2017_64\lib\Qt5Widgets.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Gui.lib;E:\QT\5.14.2\msvc2017_64\lib\Qt5Core.lib;E:\QT\5.14.2\msvc2017_64\lib\qtmain.lib;shell32.lib</Qt_LIBS_>
<Qt_LINK_OPTIONS_>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"</Qt_LINK_OPTIONS_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>E:/QT/Docs/Qt-5.14.2</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>E:/QT/5.14.2/msvc2017_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>E:/QT/5.14.2/msvc2017_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>E:/QT/5.14.2/msvc2017_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>E:/QT/5.14.2/msvc2017_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>E:/QT/5.14.2/msvc2017_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>E:/QT/5.14.2/msvc2017_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>E:/QT/Examples/Qt-5.14.2</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>E:/QT/5.14.2/msvc2017_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>E:/QT/5.14.2/msvc2017_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>E:/QT/5.14.2/msvc2017_64/lib</QMake_QT_HOST_LIBS_>
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
<QMake_QT_VERSION_>5.14.2</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);Release</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.14.2_msvc2017_64</QtBkup_QtInstall>
<QtBkup_QtModules
>core;gui;widgets</QtBkup_QtModules>
<QtBkup_QtPathBinaries
>bin</QtBkup_QtPathBinaries>
<QtBkup_QtPathLibraryExecutables
>bin</QtBkup_QtPathLibraryExecutables>
<QtBkup_QtHeaderSearchPath
></QtBkup_QtHeaderSearchPath>
<QtBkup_QtLibrarySearchPath
></QtBkup_QtLibrarySearchPath>
<QtBkup_QtVars
>DEFINES=/Project/ItemDefinitionGroup/ClCompile/PreprocessorDefinitions;INCLUDEPATH=/Project/ItemDefinitionGroup/ClCompile/AdditionalIncludeDirectories;STDCPP=/Project/ItemDefinitionGroup/ClCompile/LanguageStandard;RUNTIME=/Project/ItemDefinitionGroup/ClCompile/RuntimeLibrary;CL_OPTIONS=/Project/ItemDefinitionGroup/ClCompile/AdditionalOptions;LIBS=/Project/ItemDefinitionGroup/Link/AdditionalDependencies;LINK_OPTIONS=/Project/ItemDefinitionGroup/Link/AdditionalOptions</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>release</QtBkup_QtBuildConfig>
<QtVersion>5.14.2</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>14</QtVersionMinor>
<QtVersionPatch>2</QtVersionPatch>
</PropertyGroup>
</Project>

@ -13,7 +13,7 @@ SUBDIRS += \
$$PWD/OperatorsInterface \ $$PWD/OperatorsInterface \
$$PWD/OperatorsModel \ $$PWD/OperatorsModel \
$$PWD/OperatorsGUI \ $$PWD/OperatorsGUI \
$$PWD/CFDStruct
CONFIG += ordered CONFIG += ordered

@ -43,6 +43,7 @@ win32{
-lFITKOFMeshIO \ -lFITKOFMeshIO \
-lFITKFlowOFIOHDF5 \ -lFITKFlowOFIOHDF5 \
-lFITKCGNSIO \ -lFITKCGNSIO \
-lCFDStruct \
Debug:CONFIG += console Debug:CONFIG += console
Debug:DESTDIR = ../output/bin_d Debug:DESTDIR = ../output/bin_d
@ -72,6 +73,7 @@ win32{
-lFITKOFMeshIO \ -lFITKOFMeshIO \
-lFITKFlowOFIOHDF5 \ -lFITKFlowOFIOHDF5 \
-lFITKCGNSIO \ -lFITKCGNSIO \
-lCFDStructGUI \
Debug:LIBS += -L$$PWD/../Tools/Win64/SARibbon/libd/ \ Debug:LIBS += -L$$PWD/../Tools/Win64/SARibbon/libd/ \
-lSARibbonBard \ -lSARibbonBard \

@ -1,13 +1,13 @@
#include "MainWindowGenerator.h" #include "MainWindowGenerator.h"
#include "GUIFrame/MainWindow.h" #include "GUIFrame/MainWindow.h"
#include "CFDStruct/CFDStructGUI/CFDStructMainWindow.h"
MainWindowGenerator::MainWindowGenerator() MainWindowGenerator::MainWindowGenerator() {
{ // this->setStyle("://Structural.qss");
// this->setStyle("://Structural.qss"); // this->showMaximize(false);
// this->showMaximize(false);
} }
QWidget * MainWindowGenerator::genMainWindow() QWidget* MainWindowGenerator::genMainWindow() {
{ //return new GUI::MainWindow;
return new GUI::MainWindow; return new CFDStructMainWindow;
} }

@ -29,10 +29,10 @@
#include <QLabel> #include <QLabel>
namespace GUI namespace GUI {
{ MainWindow::MainWindow(QWidget* parent) : SARibbonMainWindow(parent) {
MainWindow::MainWindow(QWidget *parent) : SARibbonMainWindow(parent) qDebug() << "MainWindow::MainWindow is new";
{
_currentWidget = new QWidget(this); _currentWidget = new QWidget(this);
_ribbonBar = this->ribbonBar(); _ribbonBar = this->ribbonBar();
@ -48,30 +48,17 @@ namespace GUI
setWindowTitle("FastCAE-Flow"); setWindowTitle("FastCAE-Flow");
_ribbonBar->setWindowTitleTextColor(Qt::black); _ribbonBar->setWindowTitleTextColor(Qt::black);
init();
QList<QAction*> actionList = this->findChildren<QAction*>();
for (QAction* action : actionList) {
if (action == nullptr)continue;
connect(action, SIGNAL(triggered()), this->getActionEventHandle(), SLOT(execOperator()));
}
_ribbonBar->setCurrentIndex(0);
} }
MainWindow::~MainWindow() MainWindow::~MainWindow() {
{
} }
ActionEventHandler * MainWindow::getActionEventHandle() const ActionEventHandler* MainWindow::getActionEventHandle() const {
{
return m_ActionHandler; return m_ActionHandler;
} }
QAction * MainWindow::createAction(const QString & toolTip, const QString & objectName, const QString & iconPath, const QString & iconText) QAction* MainWindow::createAction(const QString& toolTip, const QString& objectName, const QString& iconPath, const QString& iconText) {
{
// 实例化一个action // 实例化一个action
QAction* tempAction = new QAction(this); QAction* tempAction = new QAction(this);
@ -85,14 +72,26 @@ namespace GUI
return tempAction; return tempAction;
} }
void MainWindow::closeEvent(QCloseEvent * event) void MainWindow::closeEvent(QCloseEvent* event) {
{
emit sigMainWindowClose(); emit sigMainWindowClose();
QMainWindow::closeEvent(event); QMainWindow::closeEvent(event);
} }
void MainWindow::init() void MainWindow::initMainWindowMenu() {
{ init();
QList<QAction*> actionList = this->findChildren<QAction*>();
for (QAction* action : actionList) {
if (action == nullptr)continue;
connect(action, SIGNAL(triggered()), this->getActionEventHandle(), SLOT(execOperator()));
}
_ribbonBar->setCurrentIndex(0);
}
void MainWindow::init() {
m_ActionHandler = new ActionEventHandler; m_ActionHandler = new ActionEventHandler;
initCentralWidget(); initCentralWidget();
@ -105,10 +104,9 @@ namespace GUI
initHelp(); initHelp();
} }
void MainWindow::initCentralWidget() void MainWindow::initCentralWidget() {
{
// 子部件水平排布 // 子部件水平排布
QSplitter *spliterLayout = new QSplitter(Qt::Horizontal); QSplitter* spliterLayout = new QSplitter(Qt::Horizontal);
spliterLayout->setMouseTracking(true); spliterLayout->setMouseTracking(true);
spliterLayout->setHandleWidth(5); spliterLayout->setHandleWidth(5);
@ -147,8 +145,7 @@ namespace GUI
setCentralWidget(_currentWidget); setCentralWidget(_currentWidget);
} }
void MainWindow::initApplicationButton() void MainWindow::initApplicationButton() {
{
//文件部分添加 //文件部分添加
QAbstractButton* fileAppButton = _ribbonBar->applicationButton(); QAbstractButton* fileAppButton = _ribbonBar->applicationButton();
fileAppButton->setText(tr("File")); fileAppButton->setText(tr("File"));
@ -177,8 +174,7 @@ namespace GUI
fileAppButton->addAction(action); fileAppButton->addAction(action);
} }
void MainWindow::initHome() void MainWindow::initHome() {
{
QString type = tr("Home"); QString type = tr("Home");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type); SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory); _ribbonBar->raiseCategory(gategory);
@ -204,59 +200,70 @@ namespace GUI
//模型结构 //模型结构
pannel = gategory->addPannel(tr("Model")); pannel = gategory->addPannel(tr("Model"));
action = getAction("actionImportGeometry"); action = getAction("actionImportGeometry");
if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large); if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large);
action = getAction("actionImportMesh"); action = getAction("actionImportMesh");
if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large); if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large);
action = getAction("actionImportOpenFoamMesh"); action = getAction("actionImportOpenFoamMesh");
if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large); if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//三维交互 //三维交互
pannel = gategory->addPannel(tr("View")); pannel = gategory->addPannel(tr("View"));
action = getAction("actionViewAuto"); action = getAction("actionViewAuto");
if (action) { if (action) {
changeAction(action, ":FITKIcons/icoR_autofit.png", tr("Auto")); changeAction(action, ":FITKIcons/icoR_autofit.png", tr("Auto"));
pannelAddAction(pannel, action, SARibbonPannelItem::Large); pannelAddAction(pannel, action, SARibbonPannelItem::Large);
} }
action = getAction("actionViewLeft"); action = getAction("actionViewLeft");
if (action) { if (action) {
changeAction(action, ":FITKIcons/icoR_viewLeft.svg", tr("X forward")); changeAction(action, ":FITKIcons/icoR_viewLeft.svg", tr("X forward"));
pannelAddAction(pannel, action, SARibbonPannelItem::Medium); pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
} }
action = getAction("actionViewRight"); action = getAction("actionViewRight");
if (action) { if (action) {
changeAction(action, ":FITKIcons/icoR_viewRight.svg", tr("X negative")); changeAction(action, ":FITKIcons/icoR_viewRight.svg", tr("X negative"));
pannelAddAction(pannel, action, SARibbonPannelItem::Medium); pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
} }
action = getAction("actionViewTop"); action = getAction("actionViewTop");
if(action){
if (action) {
changeAction(action, ":FITKIcons/icoR_viewTop.svg", tr("Y forward")); changeAction(action, ":FITKIcons/icoR_viewTop.svg", tr("Y forward"));
pannelAddAction(pannel, action, SARibbonPannelItem::Medium); pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
} }
action = getAction("actionViewBottom"); action = getAction("actionViewBottom");
if (action) { if (action) {
changeAction(action, ":FITKIcons/icoR_viewBottom.svg", tr("Y negative")); changeAction(action, ":FITKIcons/icoR_viewBottom.svg", tr("Y negative"));
pannelAddAction(pannel, action, SARibbonPannelItem::Medium); pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
} }
action = getAction("actionViewFront"); action = getAction("actionViewFront");
if (action) { if (action) {
changeAction(action, ":FITKIcons/icoR_viewFront.svg", tr("Z forward")); changeAction(action, ":FITKIcons/icoR_viewFront.svg", tr("Z forward"));
pannelAddAction(pannel, action, SARibbonPannelItem::Medium); pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
} }
action = getAction("actionViewBack"); action = getAction("actionViewBack");
if (action) { if (action) {
changeAction(action, ":FITKIcons/icoR_viewBack.svg", tr("Z negative")); changeAction(action, ":FITKIcons/icoR_viewBack.svg", tr("Z negative"));
pannelAddAction(pannel, action, SARibbonPannelItem::Medium); pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
} }
} }
void MainWindow::initGeometry() void MainWindow::initGeometry() {
{
QString type = tr("Geometry"); QString type = tr("Geometry");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type); SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory); _ribbonBar->raiseCategory(gategory);
@ -264,6 +271,7 @@ namespace GUI
QAction* action = nullptr; QAction* action = nullptr;
SARibbonPannel* pannel = gategory->addPannel(tr("Geometry")); SARibbonPannel* pannel = gategory->addPannel(tr("Geometry"));
action = getAction("actionImportGeometry"); action = getAction("actionImportGeometry");
if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large); if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large);
pannel = gategory->addPannel(tr("3D model")); pannel = gategory->addPannel(tr("3D model"));
@ -289,8 +297,7 @@ namespace GUI
pannelAddAction(pannel, action, SARibbonPannelItem::Medium); pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
} }
void MainWindow::initMesh() void MainWindow::initMesh() {
{
QString type = tr("Mesh"); QString type = tr("Mesh");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type); SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory); _ribbonBar->raiseCategory(gategory);
@ -300,9 +307,13 @@ namespace GUI
// 网格导入 // 网格导入
auto pannel = gategory->addPannel(tr("Import Mesh")); auto pannel = gategory->addPannel(tr("Import Mesh"));
action = getAction("actionImportMesh"); action = getAction("actionImportMesh");
if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large); if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large);
action = getAction("actionImportOpenFoamMesh"); action = getAction("actionImportOpenFoamMesh");
if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large); if (action) pannelAddAction(pannel, action, SARibbonPannelItem::Large);
//action = createAction(tr("Tet"), "actionTetMesh", ":/icons/displayedge.png", tr("Cube")); //action = createAction(tr("Tet"), "actionTetMesh", ":/icons/displayedge.png", tr("Cube"));
//pannelAddAction(pannel, action, SARibbonPannelItem::Medium); //pannelAddAction(pannel, action, SARibbonPannelItem::Medium);
//action = createAction(tr("Hex"), "actionHexMesh", ":/icons/displayedge.png", tr("Hex")); //action = createAction(tr("Hex"), "actionHexMesh", ":/icons/displayedge.png", tr("Hex"));
@ -331,8 +342,7 @@ namespace GUI
//pannelAddAction(pannel, action, SARibbonPannelItem::Large); //pannelAddAction(pannel, action, SARibbonPannelItem::Large);
} }
void MainWindow::initSetting() void MainWindow::initSetting() {
{
QString type = tr("Setting"); QString type = tr("Setting");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type); SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory); _ribbonBar->raiseCategory(gategory);
@ -341,8 +351,7 @@ namespace GUI
//SARibbonPannel* pannel = gategory->addPannel(tr("calculate setting")); //SARibbonPannel* pannel = gategory->addPannel(tr("calculate setting"));
} }
void MainWindow::initResult() void MainWindow::initResult() {
{
QString type = tr("Result"); QString type = tr("Result");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type); SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory); _ribbonBar->raiseCategory(gategory);
@ -351,8 +360,7 @@ namespace GUI
//SARibbonPannel* pannel = gategory->addPannel(tr("Result")); //SARibbonPannel* pannel = gategory->addPannel(tr("Result"));
} }
void MainWindow::initHelp() void MainWindow::initHelp() {
{
QString type = tr("Help"); QString type = tr("Help");
SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type); SARibbonCategory* gategory = _ribbonBar->addCategoryPage(type);
_ribbonBar->raiseCategory(gategory); _ribbonBar->raiseCategory(gategory);
@ -363,9 +371,9 @@ namespace GUI
pannelAddAction(pannel, action, SARibbonPannelItem::Large); pannelAddAction(pannel, action, SARibbonPannelItem::Large);
} }
bool MainWindow::changeAction(QAction * action, const QString iconPath, const QString & iconText) bool MainWindow::changeAction(QAction* action, const QString iconPath, const QString& iconText) {
{
if (action == nullptr)return false; if (action == nullptr)return false;
//图片修改 //图片修改
if (!iconPath.isEmpty()) { if (!iconPath.isEmpty()) {
action->setIcon(QIcon(iconPath)); action->setIcon(QIcon(iconPath));
@ -374,8 +382,8 @@ namespace GUI
//图注修改 //图注修改
if (iconText.isEmpty()) { if (iconText.isEmpty()) {
action->setText(action->toolTip()); action->setText(action->toolTip());
}
else { } else {
action->setText(iconText); action->setText(iconText);
} }
@ -383,38 +391,34 @@ namespace GUI
return true; return true;
} }
void MainWindow::pannelAddAction(SARibbonPannel * pannel, QAction * action, SARibbonPannelItem::RowProportion actionType) void MainWindow::pannelAddAction(SARibbonPannel* pannel, QAction* action, SARibbonPannelItem::RowProportion actionType) {
{
//pannel中添加action //pannel中添加action
if (pannel == nullptr || action == nullptr)return; if (pannel == nullptr || action == nullptr)return;
pannel->addAction(action, actionType); pannel->addAction(action, actionType);
} }
QAction* MainWindow::getAction(const QString actionName) QAction* MainWindow::getAction(const QString actionName) {
{
//获取Action //获取Action
if (actionName.isEmpty())return nullptr; if (actionName.isEmpty())return nullptr;
QAction* action = this->findChild< QAction* >(actionName); QAction* action = this->findChild< QAction* >(actionName);
return action; return action;
} }
MainTreeWidget* MainWindow::getTreeWidget() const MainTreeWidget* MainWindow::getTreeWidget() const {
{
return _treeWidget; return _treeWidget;
} }
RenderWidget * MainWindow::getRenderWidget() const RenderWidget* MainWindow::getRenderWidget() const {
{
return m_RenderWidget; return m_RenderWidget;
} }
PropertyWidget * MainWindow::getPropertyWidget() const PropertyWidget* MainWindow::getPropertyWidget() const {
{
return m_PropertyWidget; return m_PropertyWidget;
} }
GroupPropertyWidget * MainWindow::getGroupPropertyWidget() const GroupPropertyWidget* MainWindow::getGroupPropertyWidget() const {
{
return m_GroupPropertyWidget; return m_GroupPropertyWidget;
} }

@ -20,50 +20,48 @@ class SARibbonBar;
class SARibbonPannel; class SARibbonPannel;
namespace Ui { namespace Ui {
class MainWindow; class MainWindow;
} }
namespace GUI namespace GUI {
{ class MainMenuBase;
class MainMenuBase; class ControlPanelWidget;
class ControlPanelWidget; class RenderWidget;
class RenderWidget; class PropertyWidget;
class PropertyWidget; class GroupPropertyWidget;
class GroupPropertyWidget; class ActionEventHandler;
class ActionEventHandler;
class MainTreeWidget; class MainTreeWidget;
class TabWidget; class TabWidget;
/** /**
* @brief * @brief
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-06-12 * @date 2024-06-12
*/ */
class GUIFRAMEAPI MainWindow : public SARibbonMainWindow, public Core::FITKAbstractGUIObject class GUIFRAMEAPI MainWindow : public SARibbonMainWindow, public Core::FITKAbstractGUIObject {
{
Q_OBJECT; Q_OBJECT;
public: public:
/** /**
* @brief * @brief
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-06-12 * @date 2024-06-12
*/ */
MainWindow(QWidget *parent = nullptr); MainWindow(QWidget* parent = nullptr);
/** /**
* @brief * @brief
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-06-12 * @date 2024-06-12
*/ */
~MainWindow(); ~MainWindow();
/** /**
* @brief action * @brief action
* @return * @return
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @data 2024-06-12 * @data 2024-06-12
*/ */
ActionEventHandler* getActionEventHandle() const; ActionEventHandler* getActionEventHandle() const;
/** /**
* @brief * @brief
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
@ -98,8 +96,8 @@ namespace GUI
* @author BaGuijun (baguijun@163.com) * @author BaGuijun (baguijun@163.com)
* @date 2024-05-11 * @date 2024-05-11
*/ */
QAction* createAction(const QString &toolTip, const QString &objectName, const QString &iconPath = "", const QString& iconText = ""); QAction* createAction(const QString& toolTip, const QString& objectName, const QString& iconPath = "", const QString& iconText = "");
signals: signals:
; ;
/** /**
* @brief mainWindow * @brief mainWindow
@ -107,32 +105,35 @@ namespace GUI
* @date 2024-08-30 * @date 2024-08-30
*/ */
void sigMainWindowClose(); void sigMainWindowClose();
protected: protected:
/** /**
* @brief * @brief
* @param[i] event * @param[i] event
* @author BaGuijun (baguijun@163.com) * @author BaGuijun (baguijun@163.com)
* @date 2024-08-30 * @date 2024-08-30
*/ */
virtual void closeEvent(QCloseEvent *event) override; virtual void closeEvent(QCloseEvent* event) override;
private: protected:
/** // TODO
* @brief void initMainWindowMenu();
* @author YanZhiHui (chanyuantiandao@126.com) /**
* @date 2024-06-11 * @brief
*/ * @author YanZhiHui (chanyuantiandao@126.com)
void init(); * @date 2024-06-11
/** */
* @brief void init();
* @author YanZhiHui (chanyuantiandao@126.com) /**
* @date 2024-06-11 * @brief
*/ * @author YanZhiHui (chanyuantiandao@126.com)
void initCentralWidget(); * @date 2024-06-11
*/
void initCentralWidget();
/** /**
* @brief * @brief
* @author BaGuijun (baguijun@163.com) * @author BaGuijun (baguijun@163.com)
* @date 2024-05-11 * @date 2024-05-11
*/ */
protected:
void initApplicationButton(); void initApplicationButton();
void initHome(); void initHome();
void initGeometry(); void initGeometry();
@ -167,7 +168,7 @@ namespace GUI
* @date 2024-05-30 * @date 2024-05-30
*/ */
QAction* getAction(const QString actionName); QAction* getAction(const QString actionName);
private: protected:
QWidget* _currentWidget = nullptr; QWidget* _currentWidget = nullptr;
/** /**
* @brief RibbonBar * @brief RibbonBar
@ -187,30 +188,30 @@ namespace GUI
* @date 2024-05-30 * @date 2024-05-30
*/ */
TabWidget* _tabWidgete = nullptr; TabWidget* _tabWidgete = nullptr;
/** /**
* @brief * @brief
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-06-11 * @date 2024-06-11
*/ */
RenderWidget* m_RenderWidget{}; RenderWidget* m_RenderWidget{};
/** /**
* @brief * @brief
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-06-11 * @date 2024-06-11
*/ */
PropertyWidget* m_PropertyWidget{}; PropertyWidget* m_PropertyWidget{};
/** /**
* @brief * @brief
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-06-11 * @date 2024-06-11
*/ */
GroupPropertyWidget* m_GroupPropertyWidget{}; GroupPropertyWidget* m_GroupPropertyWidget{};
/** /**
* @brief action * @brief action
* @author YanZhiHui (chanyuantiandao@126.com) * @author YanZhiHui (chanyuantiandao@126.com)
* @date 2024-06-12 * @date 2024-06-12
*/ */
ActionEventHandler* m_ActionHandler{}; ActionEventHandler* m_ActionHandler{};
/** /**
* @brief * @brief
* @author BaGuijun (baguijun@163.com) * @author BaGuijun (baguijun@163.com)
@ -218,7 +219,7 @@ namespace GUI
*/ */
QFont _font = QFont("Arial", 9); QFont _font = QFont("Arial", 9);
}; };
} }
#endif // !__MAINWINDOW_H__ #endif // !__MAINWINDOW_H__

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Loading…
Cancel
Save