added source code and submodules

merge-requests/1/merge
_xeroxz 3 years ago
parent 795a3c8371
commit 5ef5891e13

388
.gitignore vendored

@ -0,0 +1,388 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Nuget personal access tokens and Credentials
nuget.config
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
.idea/
*.sln.iml

3
.gitmodules vendored

@ -0,0 +1,3 @@
[submodule "dependencies/vmprofiler"]
path = dependencies/vmprofiler
url = https://githacks.org/vmp2/vmprofiler.git

Binary file not shown.

@ -0,0 +1 @@
Subproject commit a05293ab21c93c024792a8064a8344241b947f81

Binary file not shown.

@ -0,0 +1,40 @@
# C++ objects and libs
*.slo
*.lo
*.o
*.a
*.la
*.lai
*.so
*.dll
*.dylib
# Qt-es
/.qmake.cache
/.qmake.stash
*.pro.user
*.pro.user.*
*.qbs.user
*.qbs.user.*
*.moc
moc_*.cpp
moc_*.h
qrc_*.cpp
ui_*.h
Makefile*
*build-*
# QtCreator
*.autosave
# QtCtreator Qml
*.qmlproject.user
*.qmlproject.user.*
# QtCtreator CMake
CMakeLists.txt.user*
.directory

@ -0,0 +1,73 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#include "DarkStyle.h"
DarkStyle::DarkStyle() : DarkStyle(styleBase()) {}
DarkStyle::DarkStyle(QStyle *style) : QProxyStyle(style) {}
QStyle *DarkStyle::styleBase(QStyle *style) const {
static QStyle *base =
!style ? QStyleFactory::create(QStringLiteral("Fusion")) : style;
return base;
}
QStyle *DarkStyle::baseStyle() const { return styleBase(); }
void DarkStyle::polish(QPalette &palette) {
// modify palette to dark
palette.setColor(QPalette::Window, QColor(53, 53, 53));
palette.setColor(QPalette::WindowText, Qt::white);
palette.setColor(QPalette::Disabled, QPalette::WindowText,
QColor(127, 127, 127));
palette.setColor(QPalette::Base, QColor(42, 42, 42));
palette.setColor(QPalette::AlternateBase, QColor(66, 66, 66));
palette.setColor(QPalette::ToolTipBase, Qt::white);
palette.setColor(QPalette::ToolTipText, QColor(53, 53, 53));
palette.setColor(QPalette::Text, Qt::white);
palette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127));
palette.setColor(QPalette::Dark, QColor(35, 35, 35));
palette.setColor(QPalette::Shadow, QColor(20, 20, 20));
palette.setColor(QPalette::Button, QColor(53, 53, 53));
palette.setColor(QPalette::ButtonText, Qt::white);
palette.setColor(QPalette::Disabled, QPalette::ButtonText,
QColor(127, 127, 127));
palette.setColor(QPalette::BrightText, Qt::red);
palette.setColor(QPalette::Link, QColor(42, 130, 218));
palette.setColor(QPalette::Highlight, QColor(42, 130, 218));
palette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(80, 80, 80));
palette.setColor(QPalette::HighlightedText, Qt::white);
palette.setColor(QPalette::Disabled, QPalette::HighlightedText,
QColor(127, 127, 127));
}
void DarkStyle::polish(QApplication *app) {
if (!app) return;
// increase font size for better reading,
// setPointSize was reduced from +2 because when applied this way in Qt5, the
// font is larger than intended for some reason
QFont defaultFont = QApplication::font();
defaultFont.setPointSize(defaultFont.pointSize() + 1);
app->setFont(defaultFont);
// loadstylesheet
QFile qfDarkstyle(QStringLiteral(":/darkstyle/darkstyle.qss"));
if (qfDarkstyle.open(QIODevice::ReadOnly | QIODevice::Text)) {
// set stylesheet
QString qsStylesheet = QString::fromLatin1(qfDarkstyle.readAll());
app->setStyleSheet(qsStylesheet);
qfDarkstyle.close();
}
}

@ -0,0 +1,39 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#ifndef DARKSTYLE_HPP
#define DARKSTYLE_HPP
#include <QApplication>
#include <QFile>
#include <QFont>
#include <QProxyStyle>
#include <QStyleFactory>
class DarkStyle : public QProxyStyle {
Q_OBJECT
public:
DarkStyle();
explicit DarkStyle(QStyle *style);
QStyle *baseStyle() const;
void polish(QPalette &palette) override;
void polish(QApplication *app) override;
private:
QStyle *styleBase(QStyle *style = Q_NULLPTR) const;
};
#endif // DARKSTYLE_HPP

@ -0,0 +1,104 @@
# Qt Frameless Window with DarkStyle
simple MainWindow class implementation with frameless window and custom dark style.
It adds also support for titlebar and buttons (minimize, maximize, close)
Look is based on the VS2013 application window (flat and frameless window)
<table>
<tr><th colspan="2">Screenshots</th></tr>
<tr><th>mac enabled</th><th>mac disabled</th></tr>
<tr>
<td><img src="https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle/blob/master/screenshot_mac_frameless_window_qt_dark_style_enabled.png" title="screenshot mac frameless window qt dark style enabled" /></td>
<td><img src="https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle/blob/master/screenshot_mac_frameless_window_qt_dark_style_disabled.png" title="screenshot mac frameless window qt dark style disabled" /></td>
</tr>
</table>
## Qt and OS
* tested with Qt5.5.0, Qt5.9.0 and Qt5.10.0
* tested on Windows 7, Windows 10,MacOSX 10.12.5 and MacOS 10.13.2
## PyQt5
Here is an [unofficial Python port](https://github.com/gmarull/qtmodern) of my implementation.
## How to use
* add additional include plath to **framelesswindow**
* add resources **framelesswindow.qrc** and **darkstyle.qrc**
* add ``#include "framelesswindow.h"`` into **main.cpp**, create window ``FramelessWindow framelessWindow;`` and assign your mainwindow object as content ``framelessWindow.setContent(mainWindow);`` and show it ``framelessWindow.show();``
* add ``#include "DarkStyle.h"`` into **main.cpp** and call ``a.setStyle(new DarkStyle);``
```qt
#include <QApplication>
#include "DarkStyle.h"
#include "framelesswindow.h"
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// style our application with custom dark style
QApplication::setStyle(new DarkStyle);
//QApplication::setPalette(QApplication::style()->standardPalette());
// create frameless window (and set windowState or title)
FramelessWindow framelessWindow;
//framelessWindow.setWindowState(Qt::WindowMaximized);
//framelessWindow.setWindowTitle("test title");
//framelessWindow.setWindowIcon(a.style()->standardIcon(QStyle::SP_DesktopIcon));
// create our mainwindow instance
MainWindow *mainWindow = new MainWindow;
// add the mainwindow to our custom frameless window
framelessWindow.setContent(mainWindow);
framelessWindow.show();
return a.exec();
}
```
## features
* frameless window
* custom dark style (based on **Fusion style** with dark palette and custom stylesheets)
* title bar
* buttons (minimize | restore | maximize | close)
* move window by drag the title bar
* dobule click title bar to toggle between window styte (maximize and normal)
* use of native events, like minimizing or system menu
## todo
* [ ] [resize window on each corner [#1]](https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle/issues/1) (some work done by [notecola](https://github.com/notecola) :+1:)
* [ ] [snap on screen edges [#3]](https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle/issues/3)
## thanks
Many thanks goes to the [Qt Forum](https://forum.qt.io/topic/80654/how-to-create-vs2013-like-frameless-window-with-dark-style) and especially to [Chris Kawa](https://forum.qt.io/user/chris-kawa) for pointing me to some usual issues and hints of great must have features.
## Licence
> The MIT License
>
> Copyright (c) 2018, Juergen Skrotzky (https://github.com/Jorgen-VikingGod, JorgenVikingGod@gmail.com)
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:
>
> The above copyright notice and this permission notice shall be included in
> all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE SOFTWARE.

@ -0,0 +1,28 @@
<RCC>
<qresource prefix="/">
<file>darkstyle/darkstyle.qss</file>
<file>darkstyle/icon_close.png</file>
<file>darkstyle/icon_restore.png</file>
<file>darkstyle/icon_undock.png</file>
<file>darkstyle/icon_branch_closed.png</file>
<file>darkstyle/icon_branch_end.png</file>
<file>darkstyle/icon_branch_more.png</file>
<file>darkstyle/icon_branch_open.png</file>
<file>darkstyle/icon_vline.png</file>
<file>darkstyle/icon_checkbox_checked.png</file>
<file>darkstyle/icon_checkbox_indeterminate.png</file>
<file>darkstyle/icon_checkbox_unchecked.png</file>
<file>darkstyle/icon_checkbox_checked_pressed.png</file>
<file>darkstyle/icon_checkbox_indeterminate_pressed.png</file>
<file>darkstyle/icon_checkbox_unchecked_pressed.png</file>
<file>darkstyle/icon_checkbox_checked_disabled.png</file>
<file>darkstyle/icon_checkbox_indeterminate_disabled.png</file>
<file>darkstyle/icon_checkbox_unchecked_disabled.png</file>
<file>darkstyle/icon_radiobutton_checked.png</file>
<file>darkstyle/icon_radiobutton_unchecked.png</file>
<file>darkstyle/icon_radiobutton_checked_pressed.png</file>
<file>darkstyle/icon_radiobutton_unchecked_pressed.png</file>
<file>darkstyle/icon_radiobutton_checked_disabled.png</file>
<file>darkstyle/icon_radiobutton_unchecked_disabled.png</file>
</qresource>
</RCC>

@ -0,0 +1,343 @@
QToolTip{
color:#ffffff;
background-color:palette(base);
border:1px solid palette(highlight);
border-radius:4px;
}
QStatusBar{
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
color:palette(mid);
}
QMenuBar{
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border-bottom:2px solid rgba(25,25,25,75);
}
QMenuBar::item{
spacing:2px;
padding:3px 4px;
background:transparent;
}
QMenuBar::item:selected{
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(106,106,106,255),stop:1 rgba(106,106,106,75));
border-left:1px solid rgba(106,106,106,127);
border-right:1px solid rgba(106,106,106,127);
}
QMenuBar::item:pressed{
background-color:palette(highlight);
border-left:1px solid rgba(25,25,25,127);
border-right:1px solid rgba(25,25,25,127);
}
QMenu{
background-color:palette(window);
border:1px solid palette(shadow);
}
QMenu::item{
padding:3px 25px 3px 25px;
border:1px solid transparent;
}
QMenu::item:disabled{
background-color:rgba(35,35,35,127);
color:palette(disabled);
}
QMenu::item:selected{
border-color:rgba(147,191,236,127);
background:palette(highlight);
}
QMenu::icon:checked{
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border:1px solid palette(highlight);
border-radius:2px;
}
QMenu::separator{
height:1px;
background:palette(alternate-base);
margin-left:5px;
margin-right:5px;
}
QMenu::indicator{
width:18px;
height:18px;
}
QMenu::indicator:non-exclusive:checked{
image:url(:/darkstyle/icon_checkbox_checked.png);
padding-left:2px;
}
QMenu::indicator:non-exclusive:unchecked{
image:url(:/darkstyle/icon_checkbox_unchecked.png);
padding-left:2px;
}
QMenu::indicator:exclusive:checked{
image:url(:/darkstyle/icon_radiobutton_checked.png);
padding-left:2px;
}
QMenu::indicator:exclusive:unchecked{
image:url(:/darkstyle/icon_radiobutton_unchecked.png);
padding-left:2px;
}
QToolBar::top{
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border-bottom:3px solid qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
}
QToolBar::bottom{
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border-top:3px solid qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
}
QToolBar::left{
background-color:qlineargradient(x1:0,y1:0,x2:1,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border-right:3px solid qlineargradient(x1:0,y1:0,x2:1,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
}
QToolBar::right{
background-color:qlineargradient(x1:1,y1:0,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border-left:3px solid qlineargradient(x1:1,y1:0,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
}
QMainWindow::separator{
width:6px;
height:5px;
padding:2px;
}
QSplitter::handle:horizontal{
width:10px;
}
QSplitter::handle:vertical{
height:10px;
}
QMainWindow::separator:hover,QSplitter::handle:hover{
background:palette(highlight);
}
QDockWidget::title{
padding:4px;
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border:1px solid rgba(25,25,25,75);
border-bottom:2px solid rgba(25,25,25,75);
}
QDockWidget{
titlebar-close-icon:url(:/darkstyle/icon_close.png);
titlebar-normal-icon:url(:/darkstyle/icon_restore.png);
}
QDockWidget::close-button,QDockWidget::float-button{
subcontrol-position:top right;
subcontrol-origin:margin;
position:absolute;
top:3px;
bottom:0px;
width:20px;
height:20px;
}
QDockWidget::close-button{
right:3px;
}
QDockWidget::float-button{
right:25px;
}
QGroupBox{
background-color:rgba(66,66,66,50%);
margin-top:27px;
border:1px solid rgba(25,25,25,127);
border-radius:4px;
}
QGroupBox::title{
subcontrol-origin:margin;
subcontrol-position:left top;
padding:4px 6px;
margin-left:3px;
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border:1px solid rgba(25,25,25,75);
border-bottom:2px solid rgb(127,127,127);
border-top-left-radius:4px;
border-top-right-radius:4px;
}
QTabWidget::pane{
background-color:rgba(66,66,66,50%);
border-top:1px solid rgba(25,25,25,50%);
}
QTabWidget::tab-bar{
left:3px;
top:1px;
}
QTabBar{
background-color:transparent;
qproperty-drawBase:0;
border-bottom:1px solid rgba(25,25,25,50%);
}
QTabBar::tab{
padding:4px 6px;
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border:1px solid rgba(25,25,25,75);
border-top-left-radius:4px;
border-top-right-radius:4px;
}
QTabBar::tab:selected,QTabBar::tab:hover{
background-color:qlineargradient(x1:0,y1:0,x2:0,y2:1,stop:0 rgba(53,53,53,127),stop:1 rgba(66,66,66,50%));
border-bottom-color:rgba(66,66,66,75%);
}
QTabBar::tab:selected{
border-bottom:2px solid palette(highlight);
}
QTabBar::tab::selected:disabled{
border-bottom:2px solid rgb(127,127,127);
}
QTabBar::tab:!selected{
margin-top:2px;
}
QCheckBox::indicator{
width:18px;
height:18px;
}
QCheckBox::indicator:checked,QTreeView::indicator:checked,QTableView::indicator:checked,QGroupBox::indicator:checked{
image:url(:/darkstyle/icon_checkbox_checked.png);
}
QCheckBox::indicator:checked:pressed,QTreeView::indicator:checked:pressed,QTableView::indicator:checked:pressed,QGroupBox::indicator:checked:pressed{
image:url(:/darkstyle/icon_checkbox_checked_pressed.png);
}
QCheckBox::indicator:checked:disabled,QTreeView::indicator:checked:disabled,QTableView::indicator:checked:disabled,QGroupBox::indicator:checked:disabled{
image:url(:/darkstyle/icon_checkbox_checked_disabled.png);
}
QCheckBox::indicator:unchecked,QTreeView::indicator:unchecked,QTableView::indicator:unchecked,QGroupBox::indicator:unchecked{
image:url(:/darkstyle/icon_checkbox_unchecked.png);
}
QCheckBox::indicator:unchecked:pressed,QTreeView::indicator:unchecked:pressed,QTableView::indicator:unchecked:pressed,QGroupBox::indicator:unchecked:pressed{
image:url(:/darkstyle/icon_checkbox_unchecked_pressed.png);
}
QCheckBox::indicator:unchecked:disabled,QTreeView::indicator:unchecked:disabled,QTableView::indicator:unchecked:disabled,QGroupBox::indicator:unchecked:disabled{
image:url(:/darkstyle/icon_checkbox_unchecked_disabled.png);
}
QCheckBox::indicator:indeterminate,QTreeView::indicator:indeterminate,QTableView::indicator:indeterminate,QGroupBox::indicator:indeterminate{
image:url(:/darkstyle/icon_checkbox_indeterminate.png);
}
QCheckBox::indicator:indeterminate:pressed,QTreeView::indicator:indeterminate:pressed,QTableView::indicator:indeterminate:pressed,QGroupBox::indicator:indeterminate:pressed{
image:url(:/darkstyle/icon_checkbox_indeterminate_pressed.png);
}
QCheckBox::indicator:indeterminate:disabled,QTreeView::indicator:indeterminate:disabled,QTableView::indicator:indeterminate:disabled,QGroupBox::indicator:indeterminate:disabled{
image:url(:/darkstyle/icon_checkbox_indeterminate_disabled.png);
}
QRadioButton::indicator{
width:18px;
height:18px;
}
QRadioButton::indicator:checked{
image:url(:/darkstyle/icon_radiobutton_checked.png);
}
QRadioButton::indicator:checked:pressed{
image:url(:/darkstyle/icon_radiobutton_checked_pressed.png);
}
QRadioButton::indicator:checked:disabled{
image:url(:/darkstyle/icon_radiobutton_checked_disabled.png);
}
QRadioButton::indicator:unchecked{
image:url(:/darkstyle/icon_radiobutton_unchecked.png);
}
QRadioButton::indicator:unchecked:pressed{
image:url(:/darkstyle/icon_radiobutton_unchecked_pressed.png);
}
QRadioButton::indicator:unchecked:disabled{
image:url(:/darkstyle/icon_radiobutton_unchecked_disabled.png);
}
QTreeView, QTableView{
alternate-background-color:palette(window);
background:palette(base);
}
QTreeView QHeaderView::section, QTableView QHeaderView::section{
background-color:qlineargradient(x1:0,y1:1,x2:0,y2:0,stop:0 rgba(25,25,25,127),stop:1 rgba(53,53,53,75));
border-style:none;
border-bottom:1px solid palette(dark);
padding-left:5px;
padding-right:5px;
}
QTreeView::item:selected:disabled, QTableView::item:selected:disabled{
background:rgb(80,80,80);
}
QTreeView::branch{
background-color:palette(base);
}
QTreeView::branch:has-siblings:!adjoins-item{
border-image:url(:/darkstyle/icon_vline.png) 0;
}
QTreeView::branch:has-siblings:adjoins-item{
border-image:url(:/darkstyle/icon_branch_more.png) 0;
}
QTreeView::branch:!has-children:!has-siblings:adjoins-item{
border-image:url(:/darkstyle/icon_branch_end.png) 0;
}
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings{
border-image:none;
image:url(:/darkstyle/icon_branch_closed.png);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings{
border-image:none;
image:url(:/darkstyle/icon_branch_open.png);
}
QScrollBar:vertical{
background:palette(base);
border-top-right-radius:2px;
border-bottom-right-radius:2px;
width:16px;
margin:0px;
}
QScrollBar::handle:vertical{
background-color:palette(alternate-base);
border-radius:2px;
min-height:20px;
margin:2px 4px 2px 4px;
}
QScrollBar::handle:vertical:hover{
background-color:palette(highlight);
}
QScrollBar::add-line:vertical{
background:none;
height:0px;
subcontrol-position:right;
subcontrol-origin:margin;
}
QScrollBar::sub-line:vertical{
background:none;
height:0px;
subcontrol-position:left;
subcontrol-origin:margin;
}
QScrollBar:horizontal{
background:palette(base);
height:16px;
margin:0px;
}
QScrollBar::handle:horizontal{
background-color:palette(alternate-base);
border-radius:2px;
min-width:20px;
margin:4px 2px 4px 2px;
}
QScrollBar::handle:horizontal:hover{
background-color:palette(highlight);
}
QScrollBar::add-line:horizontal{
background:none;
width:0px;
subcontrol-position:bottom;
subcontrol-origin:margin;
}
QScrollBar::sub-line:horizontal{
background:none;
width:0px;
subcontrol-position:top;
subcontrol-origin:margin;
}
QSlider::handle:horizontal{
border-radius:4px;
border:1px solid rgba(25,25,25,255);
background-color:palette(alternate-base);
min-height:20px;
margin:0 -4px;
}
QSlider::handle:horizontal:hover{
background:palette(highlight);
}
QSlider::add-page:horizontal{
background:palette(base);
}
QSlider::sub-page:horizontal{
background:palette(highlight);
}
QSlider::sub-page:horizontal:disabled{
background:rgb(80,80,80);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 616 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

@ -0,0 +1,38 @@
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
INCLUDEPATH +="framelesswindow"
TARGET = QtFramelessWindowDarkStyle
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
framelesswindow/framelesswindow.cpp \
framelesswindow/windowdragger.cpp \
DarkStyle.cpp
HEADERS += mainwindow.h \
framelesswindow/framelesswindow.h \
framelesswindow/windowdragger.h \
DarkStyle.h
FORMS += mainwindow.ui \
framelesswindow/framelesswindow.ui
RESOURCES += darkstyle.qrc \
framelesswindow.qrc

@ -0,0 +1,8 @@
<RCC>
<qresource prefix="/">
<file>images/icon_window_minimize.png</file>
<file>images/icon_window_restore.png</file>
<file>images/icon_window_maximize.png</file>
<file>images/icon_window_close.png</file>
</qresource>
</RCC>

@ -0,0 +1,458 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#include "framelesswindow.h"
#include <QApplication>
#include <QDesktopWidget>
#include <QGraphicsDropShadowEffect>
#include <QScreen>
#include "ui_framelesswindow.h"
FramelessWindow::FramelessWindow(QWidget *parent)
: QWidget(parent),
ui(new Ui::FramelessWindow),
m_bMousePressed(false),
m_bDragTop(false),
m_bDragLeft(false),
m_bDragRight(false),
m_bDragBottom(false) {
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);
// append minimize button flag in case of windows,
// for correct windows native handling of minimize function
#if defined(Q_OS_WIN)
setWindowFlags(windowFlags() | Qt::WindowMinimizeButtonHint);
#endif
setAttribute(Qt::WA_NoSystemBackground, true);
setAttribute(Qt::WA_TranslucentBackground);
ui->setupUi(this);
ui->restoreButton->setVisible(false);
// shadow under window title text
QGraphicsDropShadowEffect *textShadow = new QGraphicsDropShadowEffect;
textShadow->setBlurRadius(4.0);
textShadow->setColor(QColor(0, 0, 0));
textShadow->setOffset(0.0);
ui->titleText->setGraphicsEffect(textShadow);
// window shadow
QGraphicsDropShadowEffect *windowShadow = new QGraphicsDropShadowEffect;
windowShadow->setBlurRadius(9.0);
windowShadow->setColor(palette().color(QPalette::Highlight));
windowShadow->setOffset(0.0);
ui->windowFrame->setGraphicsEffect(windowShadow);
QObject::connect(qApp, &QGuiApplication::applicationStateChanged, this,
&FramelessWindow::on_applicationStateChanged);
setMouseTracking(true);
// important to watch mouse move from all child widgets
QApplication::instance()->installEventFilter(this);
}
FramelessWindow::~FramelessWindow() { delete ui; }
void FramelessWindow::on_restoreButton_clicked() {
ui->restoreButton->setVisible(false);
ui->maximizeButton->setVisible(true);
setWindowState(Qt::WindowNoState);
// on MacOS this hack makes sure the
// background window is repaint correctly
hide();
show();
}
void FramelessWindow::on_maximizeButton_clicked() {
ui->restoreButton->setVisible(true);
ui->maximizeButton->setVisible(false);
this->setWindowState(Qt::WindowMaximized);
this->showMaximized();
styleWindow(true, false);
}
void FramelessWindow::changeEvent(QEvent *event) {
if (event->type() == QEvent::WindowStateChange) {
if (windowState().testFlag(Qt::WindowNoState)) {
ui->restoreButton->setVisible(false);
ui->maximizeButton->setVisible(true);
styleWindow(true, true);
event->ignore();
} else if (windowState().testFlag(Qt::WindowMaximized)) {
ui->restoreButton->setVisible(true);
ui->maximizeButton->setVisible(false);
styleWindow(true, false);
event->ignore();
}
}
event->accept();
}
void FramelessWindow::setContent(QWidget *w) {
ui->windowContent->layout()->addWidget(w);
}
void FramelessWindow::setWindowTitle(const QString &text) {
ui->titleText->setText(text);
}
void FramelessWindow::setWindowIcon(const QIcon &ico) {
ui->icon->setPixmap(ico.pixmap(16, 16));
}
void FramelessWindow::styleWindow(bool bActive, bool bNoState) {
if (bActive) {
if (bNoState) {
layout()->setMargin(15);
ui->windowTitlebar->setStyleSheet(QStringLiteral(
"#windowTitlebar{border: 0px none palette(shadow); "
"border-top-left-radius:5px; border-top-right-radius:5px; "
"background-color:palette(shadow); height:20px;}"));
ui->windowFrame->setStyleSheet(QStringLiteral(
"#windowFrame{border:1px solid palette(highlight); border-radius:5px "
"5px 5px 5px; background-color:palette(Window);}"));
QGraphicsEffect *oldShadow = ui->windowFrame->graphicsEffect();
if (oldShadow) delete oldShadow;
QGraphicsDropShadowEffect *windowShadow = new QGraphicsDropShadowEffect;
windowShadow->setBlurRadius(9.0);
windowShadow->setColor(palette().color(QPalette::Highlight));
windowShadow->setOffset(0.0);
ui->windowFrame->setGraphicsEffect(windowShadow);
} else {
layout()->setMargin(0);
ui->windowTitlebar->setStyleSheet(QStringLiteral(
"#windowTitlebar{border: 0px none palette(shadow); "
"border-top-left-radius:0px; border-top-right-radius:0px; "
"background-color:palette(shadow); height:20px;}"));
ui->windowFrame->setStyleSheet(QStringLiteral(
"#windowFrame{border:1px solid palette(dark); border-radius:0px 0px "
"0px 0px; background-color:palette(Window);}"));
QGraphicsEffect *oldShadow = ui->windowFrame->graphicsEffect();
if (oldShadow) delete oldShadow;
ui->windowFrame->setGraphicsEffect(nullptr);
} // if (bNoState) else maximize
} else {
if (bNoState) {
layout()->setMargin(15);
ui->windowTitlebar->setStyleSheet(QStringLiteral(
"#windowTitlebar{border: 0px none palette(shadow); "
"border-top-left-radius:5px; border-top-right-radius:5px; "
"background-color:palette(dark); height:20px;}"));
ui->windowFrame->setStyleSheet(QStringLiteral(
"#windowFrame{border:1px solid #000000; border-radius:5px 5px 5px "
"5px; background-color:palette(Window);}"));
QGraphicsEffect *oldShadow = ui->windowFrame->graphicsEffect();
if (oldShadow) delete oldShadow;
QGraphicsDropShadowEffect *windowShadow = new QGraphicsDropShadowEffect;
windowShadow->setBlurRadius(9.0);
windowShadow->setColor(palette().color(QPalette::Shadow));
windowShadow->setOffset(0.0);
ui->windowFrame->setGraphicsEffect(windowShadow);
} else {
layout()->setMargin(0);
ui->windowTitlebar->setStyleSheet(QStringLiteral(
"#titlebarWidget{border: 0px none palette(shadow); "
"border-top-left-radius:0px; border-top-right-radius:0px; "
"background-color:palette(dark); height:20px;}"));
ui->windowFrame->setStyleSheet(QStringLiteral(
"#windowFrame{border:1px solid palette(shadow); border-radius:0px "
"0px 0px 0px; background-color:palette(Window);}"));
QGraphicsEffect *oldShadow = ui->windowFrame->graphicsEffect();
if (oldShadow) delete oldShadow;
ui->windowFrame->setGraphicsEffect(nullptr);
} // if (bNoState) { else maximize
} // if (bActive) { else no focus
}
void FramelessWindow::on_applicationStateChanged(Qt::ApplicationState state) {
if (windowState().testFlag(Qt::WindowNoState)) {
if (state == Qt::ApplicationActive) {
styleWindow(true, true);
} else {
styleWindow(false, true);
}
} else if (windowState().testFlag(Qt::WindowFullScreen)) {
if (state == Qt::ApplicationActive) {
styleWindow(true, false);
} else {
styleWindow(false, false);
}
}
}
void FramelessWindow::on_minimizeButton_clicked() {
setWindowState(Qt::WindowMinimized);
}
void FramelessWindow::on_closeButton_clicked() { close(); }
void FramelessWindow::on_windowTitlebar_doubleClicked() {
if (windowState().testFlag(Qt::WindowNoState)) {
on_maximizeButton_clicked();
} else if (windowState().testFlag(Qt::WindowFullScreen)) {
on_restoreButton_clicked();
}
}
void FramelessWindow::mouseDoubleClickEvent(QMouseEvent *event) {
Q_UNUSED(event);
}
void FramelessWindow::checkBorderDragging(QMouseEvent *event) {
if (isMaximized()) {
return;
}
QPoint globalMousePos = event->globalPos();
if (m_bMousePressed) {
QScreen *screen = QGuiApplication::primaryScreen();
// available geometry excludes taskbar
QRect availGeometry = screen->availableGeometry();
int h = availGeometry.height();
int w = availGeometry.width();
QList<QScreen *> screenlist = screen->virtualSiblings();
if (screenlist.contains(screen)) {
QSize sz = QApplication::desktop()->size();
h = sz.height();
w = sz.width();
}
// top right corner
if (m_bDragTop && m_bDragRight) {
int diff =
globalMousePos.x() - (m_StartGeometry.x() + m_StartGeometry.width());
int neww = m_StartGeometry.width() + diff;
diff = globalMousePos.y() - m_StartGeometry.y();
int newy = m_StartGeometry.y() + diff;
if (neww > 0 && newy > 0 && newy < h - 50) {
QRect newg = m_StartGeometry;
newg.setWidth(neww);
newg.setX(m_StartGeometry.x());
newg.setY(newy);
setGeometry(newg);
}
}
// top left corner
else if (m_bDragTop && m_bDragLeft) {
int diff = globalMousePos.y() - m_StartGeometry.y();
int newy = m_StartGeometry.y() + diff;
diff = globalMousePos.x() - m_StartGeometry.x();
int newx = m_StartGeometry.x() + diff;
if (newy > 0 && newx > 0) {
QRect newg = m_StartGeometry;
newg.setY(newy);
newg.setX(newx);
setGeometry(newg);
}
}
// bottom right corner
else if (m_bDragBottom && m_bDragLeft) {
int diff =
globalMousePos.y() - (m_StartGeometry.y() + m_StartGeometry.height());
int newh = m_StartGeometry.height() + diff;
diff = globalMousePos.x() - m_StartGeometry.x();
int newx = m_StartGeometry.x() + diff;
if (newh > 0 && newx > 0) {
QRect newg = m_StartGeometry;
newg.setX(newx);
newg.setHeight(newh);
setGeometry(newg);
}
} else if (m_bDragTop) {
int diff = globalMousePos.y() - m_StartGeometry.y();
int newy = m_StartGeometry.y() + diff;
if (newy > 0 && newy < h - 50) {
QRect newg = m_StartGeometry;
newg.setY(newy);
setGeometry(newg);
}
} else if (m_bDragLeft) {
int diff = globalMousePos.x() - m_StartGeometry.x();
int newx = m_StartGeometry.x() + diff;
if (newx > 0 && newx < w - 50) {
QRect newg = m_StartGeometry;
newg.setX(newx);
setGeometry(newg);
}
} else if (m_bDragRight) {
int diff =
globalMousePos.x() - (m_StartGeometry.x() + m_StartGeometry.width());
int neww = m_StartGeometry.width() + diff;
if (neww > 0) {
QRect newg = m_StartGeometry;
newg.setWidth(neww);
newg.setX(m_StartGeometry.x());
setGeometry(newg);
}
} else if (m_bDragBottom) {
int diff =
globalMousePos.y() - (m_StartGeometry.y() + m_StartGeometry.height());
int newh = m_StartGeometry.height() + diff;
if (newh > 0) {
QRect newg = m_StartGeometry;
newg.setHeight(newh);
newg.setY(m_StartGeometry.y());
setGeometry(newg);
}
}
} else {
// no mouse pressed
if (leftBorderHit(globalMousePos) && topBorderHit(globalMousePos)) {
setCursor(Qt::SizeFDiagCursor);
} else if (rightBorderHit(globalMousePos) && topBorderHit(globalMousePos)) {
setCursor(Qt::SizeBDiagCursor);
} else if (leftBorderHit(globalMousePos) &&
bottomBorderHit(globalMousePos)) {
setCursor(Qt::SizeBDiagCursor);
} else {
if (topBorderHit(globalMousePos)) {
setCursor(Qt::SizeVerCursor);
} else if (leftBorderHit(globalMousePos)) {
setCursor(Qt::SizeHorCursor);
} else if (rightBorderHit(globalMousePos)) {
setCursor(Qt::SizeHorCursor);
} else if (bottomBorderHit(globalMousePos)) {
setCursor(Qt::SizeVerCursor);
} else {
m_bDragTop = false;
m_bDragLeft = false;
m_bDragRight = false;
m_bDragBottom = false;
setCursor(Qt::ArrowCursor);
}
}
}
}
// pos in global virtual desktop coordinates
bool FramelessWindow::leftBorderHit(const QPoint &pos) {
const QRect &rect = this->geometry();
if (pos.x() >= rect.x() && pos.x() <= rect.x() + CONST_DRAG_BORDER_SIZE) {
return true;
}
return false;
}
bool FramelessWindow::rightBorderHit(const QPoint &pos) {
const QRect &rect = this->geometry();
int tmp = rect.x() + rect.width();
if (pos.x() <= tmp && pos.x() >= (tmp - CONST_DRAG_BORDER_SIZE)) {
return true;
}
return false;
}
bool FramelessWindow::topBorderHit(const QPoint &pos) {
const QRect &rect = this->geometry();
if (pos.y() >= rect.y() && pos.y() <= rect.y() + CONST_DRAG_BORDER_SIZE) {
return true;
}
return false;
}
bool FramelessWindow::bottomBorderHit(const QPoint &pos) {
const QRect &rect = this->geometry();
int tmp = rect.y() + rect.height();
if (pos.y() <= tmp && pos.y() >= (tmp - CONST_DRAG_BORDER_SIZE)) {
return true;
}
return false;
}
void FramelessWindow::mousePressEvent(QMouseEvent *event) {
if (isMaximized()) {
return;
}
m_bMousePressed = true;
m_StartGeometry = this->geometry();
QPoint globalMousePos = mapToGlobal(QPoint(event->x(), event->y()));
if (leftBorderHit(globalMousePos) && topBorderHit(globalMousePos)) {
m_bDragTop = true;
m_bDragLeft = true;
setCursor(Qt::SizeFDiagCursor);
} else if (rightBorderHit(globalMousePos) && topBorderHit(globalMousePos)) {
m_bDragRight = true;
m_bDragTop = true;
setCursor(Qt::SizeBDiagCursor);
} else if (leftBorderHit(globalMousePos) && bottomBorderHit(globalMousePos)) {
m_bDragLeft = true;
m_bDragBottom = true;
setCursor(Qt::SizeBDiagCursor);
} else {
if (topBorderHit(globalMousePos)) {
m_bDragTop = true;
setCursor(Qt::SizeVerCursor);
} else if (leftBorderHit(globalMousePos)) {
m_bDragLeft = true;
setCursor(Qt::SizeHorCursor);
} else if (rightBorderHit(globalMousePos)) {
m_bDragRight = true;
setCursor(Qt::SizeHorCursor);
} else if (bottomBorderHit(globalMousePos)) {
m_bDragBottom = true;
setCursor(Qt::SizeVerCursor);
}
}
}
void FramelessWindow::mouseReleaseEvent(QMouseEvent *event) {
Q_UNUSED(event);
if (isMaximized()) {
return;
}
m_bMousePressed = false;
bool bSwitchBackCursorNeeded =
m_bDragTop || m_bDragLeft || m_bDragRight || m_bDragBottom;
m_bDragTop = false;
m_bDragLeft = false;
m_bDragRight = false;
m_bDragBottom = false;
if (bSwitchBackCursorNeeded) {
setCursor(Qt::ArrowCursor);
}
}
bool FramelessWindow::eventFilter(QObject *obj, QEvent *event) {
if (isMaximized()) {
return QWidget::eventFilter(obj, event);
}
// check mouse move event when mouse is moved on any object
if (event->type() == QEvent::MouseMove) {
QMouseEvent *pMouse = dynamic_cast<QMouseEvent *>(event);
if (pMouse) {
checkBorderDragging(pMouse);
}
}
// press is triggered only on frame window
else if (event->type() == QEvent::MouseButtonPress && obj == this) {
QMouseEvent *pMouse = dynamic_cast<QMouseEvent *>(event);
if (pMouse) {
mousePressEvent(pMouse);
}
} else if (event->type() == QEvent::MouseButtonRelease) {
if (m_bMousePressed) {
QMouseEvent *pMouse = dynamic_cast<QMouseEvent *>(event);
if (pMouse) {
mouseReleaseEvent(pMouse);
}
}
}
return QWidget::eventFilter(obj, event);
}

@ -0,0 +1,69 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#ifndef FRAMELESSWINDOW_H
#define FRAMELESSWINDOW_H
#include <QWidget>
namespace Ui {
class FramelessWindow;
}
class FramelessWindow : public QWidget {
Q_OBJECT
public:
explicit FramelessWindow(QWidget *parent = Q_NULLPTR);
virtual ~FramelessWindow();
void setContent(QWidget *w);
private:
bool leftBorderHit(const QPoint &pos);
bool rightBorderHit(const QPoint &pos);
bool topBorderHit(const QPoint &pos);
bool bottomBorderHit(const QPoint &pos);
void styleWindow(bool bActive, bool bNoState);
public slots:
void setWindowTitle(const QString &text);
void setWindowIcon(const QIcon &ico);
private slots:
void on_applicationStateChanged(Qt::ApplicationState state);
void on_minimizeButton_clicked();
void on_restoreButton_clicked();
void on_maximizeButton_clicked();
void on_closeButton_clicked();
void on_windowTitlebar_doubleClicked();
protected:
virtual void changeEvent(QEvent *event);
virtual void mouseDoubleClickEvent(QMouseEvent *event);
virtual void checkBorderDragging(QMouseEvent *event);
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
virtual bool eventFilter(QObject *obj, QEvent *event);
private:
Ui::FramelessWindow *ui;
QRect m_StartGeometry;
const quint8 CONST_DRAG_BORDER_SIZE = 15;
bool m_bMousePressed;
bool m_bDragTop;
bool m_bDragLeft;
bool m_bDragRight;
bool m_bDragBottom;
};
#endif // FRAMELESSWINDOW_H

@ -0,0 +1,304 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>FramelessWindow</class>
<widget class="QWidget" name="FramelessWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1479</width>
<height>1099</height>
</rect>
</property>
<property name="windowTitle">
<string/>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QWidget" name="windowFrame" native="true">
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">#windowFrame{border:1px solid palette(highlight); border-radius:5px 5px 5px 5px; background-color:palette(Window);}</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item>
<widget class="WindowDragger" name="windowTitlebar" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">#windowTitlebar{border: 0px none palette(base); border-top-left-radius:5px; border-top-right-radius:5px; background-color:palette(shadow); height:20px;}</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0,0,0">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="spacer">
<property name="minimumSize">
<size>
<width>4</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>4</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="icon">
<property name="minimumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16</width>
<height>16</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::NoContextMenu</enum>
</property>
<property name="styleSheet">
<string notr="true">#icon {background-color:palette(shadow);}</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="titleText">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true"> padding-left:5px;
color:rgb(153,153,153);</string>
</property>
<property name="text">
<string>VMProtect 2 - Virtual Instruction Trace Inspector</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="minimizeButton">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">#minimizeButton{
background-color:none;
border:none;
width:16px;
height:16px;
padding:4px;
image:url(:/images/icon_window_minimize.png);
}
#minimizeButton:hover{
background-color:palette(alternate-base);
}
#minimizeButton:pressed{
background-color:palette(highlight);
}</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="restoreButton">
<property name="styleSheet">
<string notr="true">#restoreButton{
background-color:none;
border:none;
width:16px;
height:16px;
padding:4px;
image:url(:/images/icon_window_restore.png);
}
#restoreButton:hover{
background-color:palette(alternate-base);
}
#restoreButton:pressed{
background-color:palette(highlight);
}</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="maximizeButton">
<property name="styleSheet">
<string notr="true">#maximizeButton{
background-color:none;
border:none;
width:16px;
height:16px;
padding:4px;
image:url(:/images/icon_window_maximize.png);
}
#maximizeButton:hover{
background-color:palette(alternate-base);
}
##maximizeButton:pressed{
background-color:palette(highlight);
}</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="closeButton">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">#closeButton{
background-color:none;
border:none;
width:16px;
height:16px;
padding:4px;
image:url(:/images/icon_window_close.png);
border-top-right-radius: 5px;
}
#closeButton:hover{
background-color:palette(alternate-base);
}
##closeButton:pressed{
background-color:palette(highlight);
}</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="windowContent" native="true">
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">#windowContent{
border: 0px none palette(base);
border-radius:0px 0px 5px 5px;
}</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
<customwidget>
<class>WindowDragger</class>
<extends>QWidget</extends>
<header>windowdragger.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

@ -0,0 +1,56 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#include "windowdragger.h"
#include <QPainter>
#include <QStyleOption>
WindowDragger::WindowDragger(QWidget *parent) : QWidget(parent) {
mousePressed = false;
}
void WindowDragger::mousePressEvent(QMouseEvent *event) {
mousePressed = true;
mousePos = event->globalPos();
QWidget *parent = parentWidget();
if (parent) parent = parent->parentWidget();
if (parent) wndPos = parent->pos();
}
void WindowDragger::mouseMoveEvent(QMouseEvent *event) {
QWidget *parent = parentWidget();
if (parent) parent = parent->parentWidget();
if (parent && mousePressed)
parent->move(wndPos + (event->globalPos() - mousePos));
}
void WindowDragger::mouseReleaseEvent(QMouseEvent *event) {
Q_UNUSED(event);
mousePressed = false;
}
void WindowDragger::paintEvent(QPaintEvent *event) {
Q_UNUSED(event);
QStyleOption styleOption;
styleOption.init(this);
QPainter painter(this);
style()->drawPrimitive(QStyle::PE_Widget, &styleOption, &painter, this);
}
void WindowDragger::mouseDoubleClickEvent(QMouseEvent *event) {
Q_UNUSED(event);
emit doubleClicked();
}

@ -0,0 +1,43 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#ifndef WINDOWDRAGGER_H
#define WINDOWDRAGGER_H
#include <QMouseEvent>
#include <QWidget>
class WindowDragger : public QWidget {
Q_OBJECT
public:
explicit WindowDragger(QWidget *parent = Q_NULLPTR);
virtual ~WindowDragger() {}
signals:
void doubleClicked();
protected:
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
protected:
QPoint mousePos;
QPoint wndPos;
bool mousePressed;
};
#endif // WINDOWDRAGGER_H

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

@ -0,0 +1,40 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#include <QApplication>
#include "DarkStyle.h"
#include "framelesswindow.h"
#include "mainwindow.h"
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// style our application with custom dark style
QApplication::setStyle(new DarkStyle);
QApplication::setPalette(QApplication::style()->standardPalette());
// create frameless window (and set windowState or title)
FramelessWindow framelessWindow;
//framelessWindow.setWindowState(Qt::WindowFullScreen);
//framelessWindow.setWindowTitle("test title");
framelessWindow.setWindowIcon(a.style()->standardIcon(QStyle::SP_DesktopIcon));
// create our mainwindow instance
MainWindow *mainWindow = new MainWindow;
// add the mainwindow to our custom frameless window
framelessWindow.setContent(mainWindow);
framelessWindow.show();
return a.exec();
}

@ -0,0 +1,23 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent /*, Qt::FramelessWindowHint*/),
ui(new Ui::MainWindow) {
ui->setupUi(this);
}
MainWindow::~MainWindow() { delete ui; }

@ -0,0 +1,34 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtWidgets>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = Q_NULLPTR);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

@ -0,0 +1,645 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>670</width>
<height>559</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Label</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBox">
<item>
<property name="text">
<string>New Item</string>
</property>
</item>
<item>
<property name="text">
<string>New Item 2</string>
</property>
</item>
<item>
<property name="text">
<string>New Item 3</string>
</property>
</item>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="checkBox_4">
<property name="text">
<string>Disable Widgets</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QRadioButton" name="radioButton">
<property name="toolTipDuration">
<number>-10</number>
</property>
<property name="text">
<string>RadioButton</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_2">
<property name="text">
<string>RadioButton</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_3">
<property name="text">
<string>RadioButton</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox">
<property name="text">
<string>CheckBox</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<property name="autoExclusive">
<bool>false</bool>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>GroupBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>PushButton</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>PushButton</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>PushButton</string>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>PushButton</string>
</property>
<property name="default">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>TextEdit</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextEdit" name="textEdit">
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:'.SF NS Text'; font-size:13pt;&quot;&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;test&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab Table</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QTableWidget" name="tableWidget">
<row>
<property name="text">
<string>1</string>
</property>
</row>
<row>
<property name="text">
<string>2</string>
</property>
</row>
<row>
<property name="text">
<string>3</string>
</property>
</row>
<row>
<property name="text">
<string>4</string>
</property>
</row>
<row>
<property name="text">
<string>5</string>
</property>
</row>
<row>
<property name="text">
<string>6</string>
</property>
</row>
<row>
<property name="text">
<string>7</string>
</property>
</row>
<row>
<property name="text">
<string>8</string>
</property>
</row>
<row>
<property name="text">
<string>9</string>
</property>
</row>
<row>
<property name="text">
<string>10</string>
</property>
</row>
<column>
<property name="text">
<string>1</string>
</property>
</column>
<column>
<property name="text">
<string>2</string>
</property>
</column>
<column>
<property name="text">
<string>3</string>
</property>
</column>
<column>
<property name="text">
<string>4</string>
</property>
</column>
<column>
<property name="text">
<string>5</string>
</property>
</column>
<column>
<property name="text">
<string>6</string>
</property>
</column>
<column>
<property name="text">
<string>7</string>
</property>
</column>
<column>
<property name="text">
<string>8</string>
</property>
</column>
<column>
<property name="text">
<string>9</string>
</property>
</column>
<column>
<property name="text">
<string>10</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>Cell 1/1</string>
</property>
</item>
<item row="0" column="1">
<property name="text">
<string>Cell 2/1</string>
</property>
</item>
<item row="1" column="0">
<property name="text">
<string>Cell 1/2</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item row="2" column="1">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>GroupBox</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="3" column="1" rowspan="2">
<widget class="QDial" name="dial">
<property name="value">
<number>30</number>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QDateTimeEdit" name="dateTimeEdit"/>
</item>
<item row="3" column="0">
<widget class="QSlider" name="horizontalSlider">
<property name="value">
<number>60</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QSpinBox" name="spinBox"/>
</item>
<item row="4" column="0">
<widget class="QScrollBar" name="horizontalScrollBar">
<property name="value">
<number>25</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLineEdit" name="lineEdit">
<property name="text">
<string>test</string>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QProgressBar" name="progressBar">
<property name="value">
<number>24</number>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>670</width>
<height>20</height>
</rect>
</property>
<widget class="QMenu" name="menuTest">
<property name="title">
<string>Test</string>
</property>
<addaction name="actionTest"/>
<addaction name="actionTest_2"/>
<addaction name="separator"/>
<addaction name="actionTest_3"/>
</widget>
<widget class="QMenu" name="menuTest2">
<property name="title">
<string>Test2</string>
</property>
<widget class="QMenu" name="menuTest2_2">
<property name="title">
<string>Test2</string>
</property>
<addaction name="actionTest3"/>
<addaction name="actionTest3_2"/>
</widget>
<addaction name="menuTest2_2"/>
</widget>
<addaction name="menuTest"/>
<addaction name="menuTest2"/>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="actionTest"/>
<addaction name="actionTest_2"/>
<addaction name="actionTest3"/>
</widget>
<widget class="QStatusBar" name="statusBar"/>
<action name="actionTest">
<property name="text">
<string>Test</string>
</property>
</action>
<action name="actionTest_2">
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text">
<string>Test</string>
</property>
</action>
<action name="actionTest_3">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>Test</string>
</property>
</action>
<action name="actionTest3">
<property name="text">
<string>Test3</string>
</property>
</action>
<action name="actionTest3_2">
<property name="text">
<string>Test3</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>groupBox_2</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>543</x>
<y>70</y>
</hint>
<hint type="destinationlabel">
<x>376</x>
<y>97</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>groupBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>617</x>
<y>70</y>
</hint>
<hint type="destinationlabel">
<x>47</x>
<y>104</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>tabWidget</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>623</x>
<y>74</y>
</hint>
<hint type="destinationlabel">
<x>234</x>
<y>264</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>groupBox_3</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>503</x>
<y>80</y>
</hint>
<hint type="destinationlabel">
<x>503</x>
<y>262</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>progressBar</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>631</x>
<y>73</y>
</hint>
<hint type="destinationlabel">
<x>607</x>
<y>517</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>mainToolBar</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>648</x>
<y>71</y>
</hint>
<hint type="destinationlabel">
<x>105</x>
<y>33</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>menuBar</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>634</x>
<y>73</y>
</hint>
<hint type="destinationlabel">
<x>64</x>
<y>7</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>statusBar</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>650</x>
<y>70</y>
</hint>
<hint type="destinationlabel">
<x>533</x>
<y>549</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>comboBox</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>626</x>
<y>70</y>
</hint>
<hint type="destinationlabel">
<x>297</x>
<y>65</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_4</sender>
<signal>toggled(bool)</signal>
<receiver>label</receiver>
<slot>setDisabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>639</x>
<y>78</y>
</hint>
<hint type="destinationlabel">
<x>28</x>
<y>66</y>
</hint>
</hints>
</connection>
</connections>
</ui>

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@ -0,0 +1,358 @@
#include "QVMProfiler.h"
QVMProfiler::QVMProfiler(QWidget *parent)
: QMainWindow(parent),
TraceFileBlob(nullptr),
VMCtx(nullptr)
{
ui.setupUi(this);
}
void QVMProfiler::on_actionCloseProgram_triggered()
{ exit(0); }
void QVMProfiler::on_actionOpen_VMTrace_triggered()
{
if (TraceFileBlob && VMCtx)
{
free(TraceFileBlob);
TraceFileBlob = nullptr;
TraceFileHeader = nullptr;
TraceEntryList = nullptr;
VMHandlerTable = nullptr;
ImageBase = NULL;
VMEntryRva = NULL;
ModuleBase = NULL;
VMHandlers.clear();
VMEntry.clear();
delete VMCtx;
}
TraceFilePath = QFileDialog::getOpenFileName(this,
tr("Open Trace"), "C:\\", tr("VMTrace Files (*.vmp2)"));
if (TraceFilePath.isEmpty())
{
DbgMessage("Invalid Trace File... No File Selected...");
return;
}
if (!std::filesystem::exists(TraceFilePath.toStdString().c_str()))
{
DbgMessage("Trace File Doesnt Exist...");
return;
}
VMProtectedFilePath = QFileDialog::getOpenFileName(this,
tr("Open VMProtected File"), "C:\\");
if (VMProtectedFilePath.isEmpty())
{
DbgMessage("Invalid VMProtected File... No File Selected...");
return;
}
if (!std::filesystem::exists(VMProtectedFilePath.toStdString().c_str()))
{
DbgMessage("VMProtected File Doesnt Exist...");
return;
}
bool Success = false;
auto VMEntryRvaStr = QInputDialog::getText(0, "Input",
"VMEntry Relative Virtual Address:", QLineEdit::Normal, "", &Success);
if (!Success || VMEntryRvaStr.isEmpty())
{
DbgMessage("Invalid VMEntry Relative Virtual Address...");
return;
}
auto ImageBaseStr = QInputDialog::getText(0, "Input",
"Image Base:", QLineEdit::Normal, "", &Success);
if (!Success || ImageBaseStr.isEmpty())
{
DbgMessage("Invalid Image Base...");
return;
}
VMEntryRva = VMEntryRvaStr.toULongLong(nullptr, 16);
ImageBase = ImageBaseStr.toULongLong(nullptr, 16);
ModuleBase = reinterpret_cast<std::uintptr_t>(
LoadLibraryExA(VMProtectedFilePath.toStdString().c_str(),
NULL, DONT_RESOLVE_DLL_REFERENCES));
const auto TraceFileSize =
std::filesystem::file_size(
TraceFilePath.toStdString().c_str());
if (!TraceFileSize)
{
DbgMessage("Invalid Trace File Size...");
return;
}
DbgMessage(QString("Loading Trace File %1...").arg(TraceFilePath));
// could use a QFile for all of this...
const auto FileSize =
std::filesystem::file_size(
TraceFilePath.toStdString().c_str());
// could use a QFile for all of this...
TraceFileBlob = malloc(FileSize);
std::ifstream TFile(TraceFilePath.toStdString().c_str(), std::ios::binary);
TFile.read((char*)TraceFileBlob, FileSize);
TFile.close();
if (!InitTraceData())
{
DbgMessage("Failed To Init Trace Data...");
return;
}
UpdateUI();
}
void QVMProfiler::DbgPrint(QString DbgOutput)
{
ui.DbgOutputWindow->appendPlainText(DbgOutput);
}
void QVMProfiler::DbgMessage(QString DbgOutput)
{
QMessageBox MsgBox;
MsgBox.setText(DbgOutput);
MsgBox.exec();
DbgPrint(DbgOutput);
}
bool QVMProfiler::InitTraceData()
{
TraceFileHeader =
reinterpret_cast<vmp2::file_header*>(TraceFileBlob);
TraceEntryList =
reinterpret_cast<vmp2::entry_t*>(
reinterpret_cast<std::uintptr_t>(
TraceFileBlob) + TraceFileHeader->entry_offset);
const auto TraceMagicBytes = &TraceFileHeader->magic;
if (memcmp(TraceMagicBytes, "VMP2", sizeof "VMP2" - 1) != 0)
{
DbgMessage("Trace File Magic Bytes Are Invalid...\n");
return false;
}
DbgPrint("Trace File Magic Bytes Are Valid....");
if (!vm::util::flatten(VMEntry, VMEntryRva + ModuleBase))
{
DbgMessage("Failed To Flatten VMEntry...\n");
return false;
}
vm::util::deobfuscate(VMEntry);
DbgPrint("Flattened VMEntry...");
DbgPrint("Deobfuscated VMEntry...");
char buffer[256];
ZydisFormatter formatter;
ZydisFormatterInit(&formatter, ZYDIS_FORMATTER_STYLE_INTEL);
for (auto& Instr : VMEntry)
{
ZydisFormatterFormatInstruction(&formatter, &Instr.instr, buffer, sizeof(buffer),
(Instr.addr - TraceFileHeader->module_base) + ImageBase);
DbgPrint(QString("> %1 %2").arg(
QString::number((Instr.addr - TraceFileHeader->module_base) + ImageBase, 16)).arg(buffer));
}
VMHandlerTable = vm::handler::table::get(VMEntry);
if (!vm::handler::get_all(ModuleBase, ImageBase, VMEntry, VMHandlerTable, VMHandlers))
{
DbgMessage("Failed To Get All VM Handler Meta Data...\n");
return false;
}
DbgPrint("Located All VM Handlers...");
VMCtx = new vm::vmctx_t(TraceFileHeader,
TraceEntryList, VMHandlers, ModuleBase, ImageBase);
return true;
}
void QVMProfiler::UpdateUI()
{
ui.VirtualInstructionTree->clear();
for (auto [VirtInstr, TraceEntry] = VMCtx->step(); TraceEntry && !VirtInstr.empty();
std::tie(VirtInstr, TraceEntry) = VMCtx->step())
{
auto InstructionTraceData = new QTreeWidgetItem();
InstructionTraceData->setText(0, QString::number((TraceEntry->vip - TraceFileHeader->module_base) + ImageBase, 16));
if (VMHandlers[TraceEntry->handler_idx].imm_size)
{
QString SecondOperandBytes;
auto numByteOperand = VMHandlers[TraceEntry->handler_idx].imm_size / 8;
auto spaceIdx = VirtInstr.find(" ") + 1;
auto ImmValue = QString(VirtInstr.substr(
spaceIdx, VirtInstr.size() - spaceIdx).c_str()).toULongLong(nullptr, 16);
for (auto idx = 0u; idx < numByteOperand; ++idx)
{
SecondOperandBytes.append(QString::number(*(
reinterpret_cast<std::uint8_t*>(&ImmValue) + idx), 16));
SecondOperandBytes.append(" ");
}
InstructionTraceData->setText(1, QString::number(
TraceEntry->handler_idx, 16).append(" - ").append(SecondOperandBytes));
}
else
{
// else we just put the first operand byte (vm handler index)...
InstructionTraceData->setText(1, QString::number(TraceEntry->handler_idx, 16));
}
InstructionTraceData->setText(2, VirtInstr.c_str());
ui.VirtualInstructionTree->addTopLevelItem(InstructionTraceData);
}
ui.VirtualInstructionTree->topLevelItem(0)->setSelected(true);
}
void QVMProfiler::on_VirtualInstructionTree_itemSelectionChanged()
{
auto SelectedItem = ui.VirtualInstructionTree->selectedItems()[0];
auto VIPAddr = SelectedItem->data(0, 0).toString().toULongLong(nullptr, 16);
vmp2::entry_t* Entry = nullptr;
for (auto idx = 0u; idx < TraceFileHeader->entry_count; ++idx)
{
if ((TraceEntryList[idx].vip - TraceFileHeader->module_base) + ImageBase == VIPAddr)
{
Entry = &TraceEntryList[idx];
break;
}
}
ui.VirtualRegisterTree->topLevelItem(0)->setText(1,
QString::number((Entry->vip - TraceFileHeader->module_base) + ImageBase, 16));
ui.VirtualRegisterTree->topLevelItem(1)->setText(1,
QString::number(Entry->regs.rbp, 16));
ui.VirtualRegisterTree->topLevelItem(2)->setText(1,
QString::number(Entry->decrypt_key, 16));
for (auto idx = 4; idx < 28; ++idx)
ui.VirtualRegisterTree->topLevelItem(idx)->setText(1,
QString::number(Entry->vregs.qword[idx - 4], 16));
for (auto idx = 0u; idx < 15; ++idx)
ui.NativeRegisterTree->topLevelItem(idx)->setText(1,
QString::number(Entry->regs.raw[idx], 16));
ui.NativeRegisterTree->topLevelItem(
16)->setText(1, QString::number(Entry->regs.rflags, 16));
rflags flags;
flags.flags = Entry->regs.rflags;
ui.NativeRegisterTree->topLevelItem(16)->child(0)->setText(
1, QString::number(flags.zero_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(1)->setText(
1, QString::number(flags.parity_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(2)->setText(
1, QString::number(flags.auxiliary_carry_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(3)->setText(
1, QString::number(flags.overflow_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(4)->setText(
1, QString::number(flags.sign_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(5)->setText(
1, QString::number(flags.direction_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(6)->setText(
1, QString::number(flags.carry_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(7)->setText(
1, QString::number(flags.trap_flag));
ui.NativeRegisterTree->topLevelItem(16)->child(8)->setText(
1, QString::number(flags.interrupt_enable_flag));
ui.VirtualStackTree->clear();
for (auto idx = 0u; idx < sizeof(Entry->vsp) / 8; ++idx)
{
auto newEntry = new QTreeWidgetItem();
newEntry->setText(0, QString::number(Entry->regs.rbp - (idx * 8), 16));
newEntry->setText(1, QString::number(Entry->vsp.qword[idx], 16));
ui.VirtualStackTree->addTopLevelItem(newEntry);
}
ui.VMHandlerInstructionsTree->clear();
auto InstrVec = &VMHandlers[Entry->handler_idx].instrs;
char buffer[256];
ZydisFormatter formatter;
ZydisFormatterInit(&formatter, ZYDIS_FORMATTER_STYLE_INTEL);
for (auto idx = 0u; idx < InstrVec->size(); ++idx)
{
auto newEntry = new QTreeWidgetItem();
newEntry->setText(0, QString::number(
(InstrVec->at(idx).addr - TraceFileHeader->module_base) + ImageBase, 16));
ZydisFormatterFormatInstruction(&formatter, &InstrVec->at(idx).instr,
buffer, sizeof(buffer), (InstrVec->at(idx).addr -
TraceFileHeader->module_base) + ImageBase);
newEntry->setText(1, buffer);
ui.VMHandlerInstructionsTree->addTopLevelItem(newEntry);
}
ui.VMHandlerTransformationsTree->clear();
auto HandlerTransforms = &VMHandlers[Entry->handler_idx].transforms;
for (auto [TransformType, TransformInstr] : *HandlerTransforms)
{
auto newEntry = new QTreeWidgetItem();
switch (TransformType)
{
case vm::transform::type::rolling_key:
{
newEntry->setText(0, "Key Transform");
break;
}
case vm::transform::type::generic1:
case vm::transform::type::generic2:
case vm::transform::type::generic3:
{
newEntry->setText(0, "Generic");
break;
}
case vm::transform::type::update_key:
{
newEntry->setText(0, "Update Key");
break;
}
default:
throw std::invalid_argument("invalid transformation type...");
}
ZydisFormatterFormatInstruction(&formatter, &TransformInstr,
buffer, sizeof(buffer), NULL);
newEntry->setText(1, buffer);
ui.VMHandlerTransformationsTree->addTopLevelItem(newEntry);
}
}

@ -0,0 +1,48 @@
#pragma once
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMessageBox.h>
#include <QtWidgets/QInputDialog.h>
#include <Windows.h>
#include <filesystem>
#include <fstream>
#include "ui_QVMProfiler.h"
#include "vmp2.hpp"
#include "vm.h"
#include "vmctx.h"
#include "ia32.hpp"
class QVMProfiler : public QMainWindow
{
Q_OBJECT
public:
QVMProfiler(QWidget *parent = Q_NULLPTR);
private slots:
void on_actionOpen_VMTrace_triggered();
void on_actionCloseProgram_triggered();
void on_VirtualInstructionTree_itemSelectionChanged();
private:
void DbgPrint(QString DbgOutput);
void DbgMessage(QString DbgOutput);
void UpdateUI();
bool InitTraceData();
Ui::QVMProfilerClass ui;
QString TraceFilePath;
QString VMProtectedFilePath;
std::uint64_t ImageBase, VMEntryRva, ModuleBase;
std::vector<vm::handler_t> VMHandlers;
zydis_routine_t VMEntry;
std::uintptr_t* VMHandlerTable;
vm::vmctx_t* VMCtx;
void* TraceFileBlob;
vmp2::file_header* TraceFileHeader;
vmp2::entry_t* TraceEntryList;
};

@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/QVMProfiler">
<file>icon.ico</file>
</qresource>
</RCC>

@ -0,0 +1,594 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QVMProfilerClass</class>
<widget class="QMainWindow" name="QVMProfilerClass">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1220</width>
<height>1038</height>
</rect>
</property>
<property name="acceptDrops">
<bool>true</bool>
</property>
<property name="windowTitle">
<string>VMProfiler</string>
</property>
<property name="toolTipDuration">
<number>0</number>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="acceptDrops">
<bool>false</bool>
</property>
<property name="title">
<string>Virutal CPU Trace Information</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Virtual Instructions</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>556</width>
<height>777</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_5">
<item>
<widget class="QTreeWidget" name="VirtualInstructionTree">
<attribute name="headerDefaultSectionSize">
<number>120</number>
</attribute>
<column>
<property name="text">
<string>Address</string>
</property>
</column>
<column>
<property name="text">
<string>Operands</string>
</property>
</column>
<column>
<property name="text">
<string>Virtual Instruction</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Registers</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QTreeWidget" name="VirtualRegisterTree">
<attribute name="headerDefaultSectionSize">
<number>65</number>
</attribute>
<column>
<property name="text">
<string>Register</string>
</property>
</column>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
<item>
<property name="text">
<string>VIP</string>
</property>
</item>
<item>
<property name="text">
<string>VSP</string>
</property>
</item>
<item>
<property name="text">
<string>DKEY</string>
</property>
</item>
<item>
<property name="text">
<string/>
</property>
</item>
<item>
<property name="text">
<string>vreg0</string>
</property>
<property name="text">
<string/>
</property>
</item>
<item>
<property name="text">
<string>vreg1</string>
</property>
</item>
<item>
<property name="text">
<string>vreg2</string>
</property>
</item>
<item>
<property name="text">
<string>vreg3</string>
</property>
</item>
<item>
<property name="text">
<string>vreg4</string>
</property>
</item>
<item>
<property name="text">
<string>vreg5</string>
</property>
</item>
<item>
<property name="text">
<string>vreg6</string>
</property>
</item>
<item>
<property name="text">
<string>vreg7</string>
</property>
</item>
<item>
<property name="text">
<string>vreg8</string>
</property>
</item>
<item>
<property name="text">
<string>vreg9</string>
</property>
</item>
<item>
<property name="text">
<string>vreg10</string>
</property>
</item>
<item>
<property name="text">
<string>vreg11</string>
</property>
</item>
<item>
<property name="text">
<string>vreg12</string>
</property>
</item>
<item>
<property name="text">
<string>vreg13</string>
</property>
</item>
<item>
<property name="text">
<string>vreg14</string>
</property>
</item>
<item>
<property name="text">
<string>vreg15</string>
</property>
</item>
<item>
<property name="text">
<string>vreg16</string>
</property>
</item>
<item>
<property name="text">
<string>vreg17</string>
</property>
</item>
<item>
<property name="text">
<string>vreg18</string>
</property>
</item>
<item>
<property name="text">
<string>vreg19</string>
</property>
</item>
<item>
<property name="text">
<string>vreg20</string>
</property>
</item>
<item>
<property name="text">
<string>vreg21</string>
</property>
</item>
<item>
<property name="text">
<string>vreg22</string>
</property>
</item>
<item>
<property name="text">
<string>vreg23</string>
</property>
</item>
</widget>
</item>
<item>
<widget class="QTreeWidget" name="NativeRegisterTree">
<attribute name="headerDefaultSectionSize">
<number>70</number>
</attribute>
<column>
<property name="text">
<string>Register</string>
</property>
</column>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
<item>
<property name="text">
<string>R15</string>
</property>
</item>
<item>
<property name="text">
<string>R14</string>
</property>
</item>
<item>
<property name="text">
<string>R13</string>
</property>
</item>
<item>
<property name="text">
<string>R12</string>
</property>
</item>
<item>
<property name="text">
<string>R11</string>
</property>
</item>
<item>
<property name="text">
<string>R10</string>
</property>
</item>
<item>
<property name="text">
<string>R9</string>
</property>
</item>
<item>
<property name="text">
<string>R8</string>
</property>
</item>
<item>
<property name="text">
<string>RBP</string>
</property>
</item>
<item>
<property name="text">
<string>RDI</string>
</property>
</item>
<item>
<property name="text">
<string>RSI</string>
</property>
</item>
<item>
<property name="text">
<string>RDX</string>
</property>
</item>
<item>
<property name="text">
<string>RCX</string>
</property>
</item>
<item>
<property name="text">
<string>RBX</string>
</property>
</item>
<item>
<property name="text">
<string>RAX</string>
</property>
</item>
<item>
<property name="text">
<string/>
</property>
</item>
<item>
<property name="text">
<string>RFLAGS</string>
</property>
<item>
<property name="text">
<string>ZF</string>
</property>
</item>
<item>
<property name="text">
<string>PF</string>
</property>
</item>
<item>
<property name="text">
<string>AF</string>
</property>
</item>
<item>
<property name="text">
<string>OF</string>
</property>
</item>
<item>
<property name="text">
<string>SF</string>
</property>
</item>
<item>
<property name="text">
<string>DF</string>
</property>
</item>
<item>
<property name="text">
<string>CF</string>
</property>
</item>
<item>
<property name="text">
<string>TF</string>
</property>
</item>
<item>
<property name="text">
<string>IF</string>
</property>
</item>
</item>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Virtual Stack</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QScrollArea" name="scrollArea_3">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_3">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>556</width>
<height>225</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QTreeWidget" name="VirtualStackTree">
<column>
<property name="text">
<string>Stack Pointer</string>
</property>
</column>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_5">
<property name="title">
<string>Virtual Machine Instruction Handler</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>VM Handler Instructions</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QTreeWidget" name="VMHandlerInstructionsTree">
<column>
<property name="text">
<string>Address</string>
</property>
</column>
<column>
<property name="text">
<string>Instruction</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_7">
<property name="title">
<string>VM Handler Transformations</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QTreeWidget" name="VMHandlerTransformationsTree">
<column>
<property name="text">
<string>Address</string>
</property>
</column>
<column>
<property name="text">
<string>Instruction</string>
</property>
</column>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1220</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="menuOpen_VMTrace">
<property name="title">
<string>File</string>
</property>
<addaction name="actionOpen_VMTrace"/>
<addaction name="actionCloseProgram"/>
</widget>
<addaction name="menuOpen_VMTrace"/>
</widget>
<widget class="QDockWidget" name="dockWidget">
<property name="minimumSize">
<size>
<width>89</width>
<height>150</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>524287</width>
<height>150</height>
</size>
</property>
<property name="baseSize">
<size>
<width>89</width>
<height>150</height>
</size>
</property>
<property name="windowTitle">
<string>Debug Log</string>
</property>
<attribute name="dockWidgetArea">
<number>8</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents">
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QPlainTextEdit" name="DbgOutputWindow">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<action name="actionOpen">
<property name="text">
<string>Open</string>
</property>
</action>
<action name="actionClose">
<property name="text">
<string>Close</string>
</property>
</action>
<action name="actionOpen_VMTrace">
<property name="text">
<string>Open Trace</string>
</property>
</action>
<action name="actionCloseProgram">
<property name="text">
<string>Close</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
<include location="QVMProfiler.qrc"/>
</resources>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

@ -0,0 +1,3 @@
// Icon Resource Definition
#define MAIN_ICON 102
MAIN_ICON ICON "icon.ico"

@ -0,0 +1,18 @@
#include <QtWidgets/QApplication>
#include <QFile>
#include <QTextStream>
#include "QVMProfiler.h"
#include "framelesswindow.h"
#include "DarkStyle.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QApplication::setStyle(new DarkStyle);
FramelessWindow framelessWindow;
framelessWindow.setContent(new QVMProfiler);
framelessWindow.setWindowIcon(QIcon("icon.ico"));
framelessWindow.show();
return app.exec();
}

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A0485AE3-1965-4BE3-A2C4-A8257337C271}</ProjectGuid>
<Keyword>QtVS_v304</Keyword>
<WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">10.0.19041.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">10.0.19041.0</WindowsTargetPlatformVersion>
<QtMsBuild Condition="'$(QtMsBuild)'=='' OR !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
<Import Project="$(QtMsBuild)\qt_defaults.props" />
</ImportGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings">
<QtInstall>5.15.1</QtInstall>
<QtModules>core;gui;widgets</QtModules>
<QtBuildConfig>debug</QtBuildConfig>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
<QtInstall>5.15.1</QtInstall>
<QtModules>core;gui;widgets</QtModules>
<QtBuildConfig>release</QtBuildConfig>
</PropertyGroup>
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
</Target>
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Label="Shared" />
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(QtMsBuild)\Qt.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(QtMsBuild)\Qt.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);;$(ProjectDir)..\dependencies\vmprofiler\include</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<IncludePath>G:\Qt\5.15.1\msvc2019_64\include;$(ProjectDir);$(ProjectDir)DarkStyle\framelesswindow\;$(ProjectDir)DarkStyle;$(IncludePath);$(ProjectDir)..\dependencies\vmprofiler\include</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<LanguageStandard>stdcpplatest</LanguageStandard>
</ClCompile>
<Link>
<AdditionalDependencies>$(ProjectDir)..\libs\*;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">
<ClCompile>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration">
<ClCompile>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DebugInformationFormat>None</DebugInformationFormat>
<Optimization>MaxSpeed</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<QtRcc Include="DarkStyle\darkstyle.qrc" />
<QtRcc Include="DarkStyle\framelesswindow.qrc" />
<QtRcc Include="QVMProfiler.qrc" />
<QtUic Include="DarkStyle\framelesswindow\framelesswindow.ui" />
<QtUic Include="QVMProfiler.ui" />
<QtMoc Include="QVMProfiler.h" />
<ClCompile Include="DarkStyle\DarkStyle.cpp" />
<ClCompile Include="DarkStyle\framelesswindow\framelesswindow.cpp" />
<ClCompile Include="DarkStyle\framelesswindow\windowdragger.cpp" />
<ClCompile Include="QVMProfiler.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="DarkStyle\DarkStyle.h" />
<QtMoc Include="DarkStyle\framelesswindow\windowdragger.h" />
<QtMoc Include="DarkStyle\framelesswindow\framelesswindow.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\transform.hpp" />
<ClInclude Include="..\dependencies\vmprofiler\include\vm.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\vmctx.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\vmp2.hpp" />
<ClInclude Include="..\dependencies\vmprofiler\include\vmprofiler.hpp" />
<ClInclude Include="..\dependencies\vmprofiler\include\vmutils.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\ZycoreExportConfig.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\ZydisExportConfig.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Decoder.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\DecoderTypes.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Formatter.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\FormatterBuffer.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumInstructionCategory.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumISAExt.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumISASet.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumMnemonic.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumRegister.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\DecoderData.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\FormatterATT.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\FormatterBase.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\FormatterIntel.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\SharedData.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\String.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\MetaInfo.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Mnemonic.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Register.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\SharedTypes.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\ShortString.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Status.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Utils.h" />
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Zydis.h" />
<ClInclude Include="ia32.hpp" />
</ItemGroup>
<ItemGroup>
<Image Include="icon.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="icon.rc" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="C:\Users\_xeroxz\Desktop\vmprofiler-qt\dependencies\vmprofiler\src\vmprofiler.vcxproj">
<Project>{d0b6092a-9944-4f24-9486-4b7dae372619}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
<Import Project="$(QtMsBuild)\qt.targets" />
</ImportGroup>
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

@ -0,0 +1,196 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="QVMProfiler.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="DarkStyle\framelesswindow\framelesswindow.cpp">
<Filter>Source Files\DarkStyle\framelesswindow</Filter>
</ClCompile>
<ClCompile Include="DarkStyle\framelesswindow\windowdragger.cpp">
<Filter>Source Files\DarkStyle\framelesswindow</Filter>
</ClCompile>
<ClCompile Include="DarkStyle\DarkStyle.cpp">
<Filter>Source Files\DarkStyle</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{841656a6-8f18-40f6-88cc-63394509aec2}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{b94916d4-6db7-4a7c-bfe5-f2ae9acd3b54}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{8c45819e-3375-4fa3-81c3-ef06ca9b22f8}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\DarkStyle">
<UniqueIdentifier>{412fa996-96ab-4202-88d8-4f5d8c303483}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\DarkStyle\framelesswindow">
<UniqueIdentifier>{8e5d2814-ebf7-49a1-b226-71e5efcc79aa}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\DarkStyle">
<UniqueIdentifier>{ab85244a-db4d-4aef-a6e5-cb51b205206f}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\DarkStyle\framelesswindow">
<UniqueIdentifier>{ab0c8bb3-a7db-47a7-ad9f-da0b8569eea1}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\vmprofiler">
<UniqueIdentifier>{5f579aad-1e93-4542-9e34-7f59aaee46da}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\vmprofiler\Zydis">
<UniqueIdentifier>{b0071ba0-39c0-4018-8575-29ae093557cb}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\vmprofiler\Zydis\Generated">
<UniqueIdentifier>{eb951f82-57a0-4854-bd37-1d837c3b55f5}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\vmprofiler\Zydis\Internal">
<UniqueIdentifier>{ee615592-4e69-4d91-9a33-bd1ef26cc6a2}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<QtRcc Include="QVMProfiler.qrc">
<Filter>Resource Files</Filter>
</QtRcc>
<QtRcc Include="DarkStyle\darkstyle.qrc">
<Filter>Resource Files</Filter>
</QtRcc>
<QtRcc Include="DarkStyle\framelesswindow.qrc">
<Filter>Resource Files</Filter>
</QtRcc>
</ItemGroup>
<ItemGroup>
<QtUic Include="QVMProfiler.ui">
<Filter>Resource Files</Filter>
</QtUic>
<QtUic Include="DarkStyle\framelesswindow\framelesswindow.ui">
<Filter>Resource Files</Filter>
</QtUic>
</ItemGroup>
<ItemGroup>
<QtMoc Include="QVMProfiler.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="DarkStyle\framelesswindow\framelesswindow.h">
<Filter>Header Files\DarkStyle\framelesswindow</Filter>
</QtMoc>
<QtMoc Include="DarkStyle\framelesswindow\windowdragger.h">
<Filter>Header Files\DarkStyle\framelesswindow</Filter>
</QtMoc>
<QtMoc Include="DarkStyle\DarkStyle.h">
<Filter>Header Files\DarkStyle</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<ClInclude Include="ia32.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\transform.hpp">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\vm.h">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\vmctx.h">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\vmp2.hpp">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\vmprofiler.hpp">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\vmutils.h">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\ZycoreExportConfig.h">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\ZydisExportConfig.h">
<Filter>Header Files\vmprofiler</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Decoder.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\DecoderTypes.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Formatter.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\FormatterBuffer.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\MetaInfo.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Mnemonic.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Register.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\SharedTypes.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\ShortString.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Status.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Utils.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Zydis.h">
<Filter>Header Files\vmprofiler\Zydis</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumInstructionCategory.h">
<Filter>Header Files\vmprofiler\Zydis\Generated</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumISAExt.h">
<Filter>Header Files\vmprofiler\Zydis\Generated</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumISASet.h">
<Filter>Header Files\vmprofiler\Zydis\Generated</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumMnemonic.h">
<Filter>Header Files\vmprofiler\Zydis\Generated</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Generated\EnumRegister.h">
<Filter>Header Files\vmprofiler\Zydis\Generated</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\DecoderData.h">
<Filter>Header Files\vmprofiler\Zydis\Internal</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\FormatterATT.h">
<Filter>Header Files\vmprofiler\Zydis\Internal</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\FormatterBase.h">
<Filter>Header Files\vmprofiler\Zydis\Internal</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\FormatterIntel.h">
<Filter>Header Files\vmprofiler\Zydis\Internal</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\SharedData.h">
<Filter>Header Files\vmprofiler\Zydis\Internal</Filter>
</ClInclude>
<ClInclude Include="..\dependencies\vmprofiler\include\Zydis\Internal\String.h">
<Filter>Header Files\vmprofiler\Zydis\Internal</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="icon.ico">
<Filter>Resource Files</Filter>
</Image>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="icon.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
</Project>

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

@ -0,0 +1,57 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB</Qt_DEFINES_>
<Qt_INCLUDEPATH_>G:\Qt\5.15.1\msvc2019_64\include;G:\Qt\5.15.1\msvc2019_64\include\QtWidgets;G:\Qt\5.15.1\msvc2019_64\include\QtGui;G:\Qt\5.15.1\msvc2019_64\include\QtANGLE;G:\Qt\5.15.1\msvc2019_64\include\QtCore;/include;G:\Qt\5.15.1\msvc2019_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_LIBS_>G:\Qt\5.15.1\msvc2019_64\lib\Qt5Widgetsd.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Guid.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Cored.lib;G:\Qt\5.15.1\msvc2019_64\lib\qtmaind.lib;shell32.lib</Qt_LIBS_>
<Qt_LIBPATH_>C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib</Qt_LIBPATH_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>G:/Qt/Docs/Qt-5.15.1</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>G:/Qt/5.15.1/msvc2019_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>G:/Qt/5.15.1/msvc2019_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>G:/Qt/5.15.1/msvc2019_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>G:/Qt/5.15.1/msvc2019_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>G:/Qt/5.15.1/msvc2019_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>G:/Qt/5.15.1/msvc2019_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>G:/Qt/5.15.1/msvc2019_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>G:/Qt/5.15.1/msvc2019_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.15.1</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);x64\Debug\moc;x64\Debug\uic</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.15.1</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=/-D([^\s=]+(=(\x22(\\\\|\\\x22|[^\x22])*\x22|\S+))?)/$1/;INCLUDEPATH=INCPATH/-(?:iquote|isystem|idirafter|I)\s*(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:(?:\/LIBPATH:|-L)(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/(?:\/LIBPATH:|-L)(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>debug</QtBkup_QtBuildConfig>
<QtVersion>5.15.1</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>15</QtVersionMinor>
<QtVersionPatch>1</QtVersionPatch>
</PropertyGroup>
</Project>

@ -0,0 +1,7 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
QMAKE_CXX.QMAKE_MSC_VER = 1928
QMAKE_CXX.QMAKE_MSC_FULL_VER = 192829336
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_MSC_VER \
QMAKE_MSC_FULL_VER

@ -0,0 +1 @@
C:\Users\_xeroxz\AppData\Local\Temp\y4asezfz.dgr.designtime.props

File diff suppressed because one or more lines are too long

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

@ -0,0 +1 @@
Info: creating stash file D:\vmprofiler-qt\src\x64\Debug\qmake\temp\.qmake.stash

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

@ -0,0 +1,57 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;QT_WIDGETS_LIB;QT_GUI_LIB;QT_CORE_LIB</Qt_DEFINES_>
<Qt_INCLUDEPATH_>G:\Qt\5.15.1\msvc2019_64\include;G:\Qt\5.15.1\msvc2019_64\include\QtWidgets;G:\Qt\5.15.1\msvc2019_64\include\QtGui;G:\Qt\5.15.1\msvc2019_64\include\QtANGLE;G:\Qt\5.15.1\msvc2019_64\include\QtCore;/include;G:\Qt\5.15.1\msvc2019_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_LIBS_>G:\Qt\5.15.1\msvc2019_64\lib\Qt5Widgetsd.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Guid.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Cored.lib;G:\Qt\5.15.1\msvc2019_64\lib\qtmaind.lib;shell32.lib</Qt_LIBS_>
<Qt_LIBPATH_>C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib</Qt_LIBPATH_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>G:/Qt/Docs/Qt-5.15.1</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>G:/Qt/5.15.1/msvc2019_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>G:/Qt/5.15.1/msvc2019_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>G:/Qt/5.15.1/msvc2019_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>G:/Qt/5.15.1/msvc2019_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>G:/Qt/5.15.1/msvc2019_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>G:/Qt/5.15.1/msvc2019_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>G:/Qt/5.15.1/msvc2019_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>G:/Qt/5.15.1/msvc2019_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.15.1</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);x64\Debug\moc;x64\Debug\uic</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.15.1</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=/-D([^\s=]+(=(\x22(\\\\|\\\x22|[^\x22])*\x22|\S+))?)/$1/;INCLUDEPATH=INCPATH/-(?:iquote|isystem|idirafter|I)\s*(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:(?:\/LIBPATH:|-L)(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/(?:\/LIBPATH:|-L)(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>debug</QtBkup_QtBuildConfig>
<QtVersion>5.15.1</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>15</QtVersionMinor>
<QtVersionPatch>1</QtVersionPatch>
</PropertyGroup>
</Project>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,95 @@
/****************************************************************************
** Meta object code from reading C++ file 'DarkStyle.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../../DarkStyle/DarkStyle.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'DarkStyle.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.1. 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_DarkStyle_t {
QByteArrayData data[1];
char stringdata0[10];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_DarkStyle_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_DarkStyle_t qt_meta_stringdata_DarkStyle = {
{
QT_MOC_LITERAL(0, 0, 9) // "DarkStyle"
},
"DarkStyle"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_DarkStyle[] = {
// 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 DarkStyle::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 DarkStyle::staticMetaObject = { {
QMetaObject::SuperData::link<QProxyStyle::staticMetaObject>(),
qt_meta_stringdata_DarkStyle.data,
qt_meta_data_DarkStyle,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *DarkStyle::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *DarkStyle::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_DarkStyle.stringdata0))
return static_cast<void*>(this);
return QProxyStyle::qt_metacast(_clname);
}
int DarkStyle::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QProxyStyle::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

@ -0,0 +1,129 @@
/****************************************************************************
** Meta object code from reading C++ file 'QVMProfiler.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../../QVMProfiler.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'QVMProfiler.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.1. 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_QVMProfiler_t {
QByteArrayData data[5];
char stringdata0[124];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_QVMProfiler_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_QVMProfiler_t qt_meta_stringdata_QVMProfiler = {
{
QT_MOC_LITERAL(0, 0, 11), // "QVMProfiler"
QT_MOC_LITERAL(1, 12, 31), // "on_actionOpen_VMTrace_triggered"
QT_MOC_LITERAL(2, 44, 0), // ""
QT_MOC_LITERAL(3, 45, 31), // "on_actionCloseProgram_triggered"
QT_MOC_LITERAL(4, 77, 46) // "on_VirtualInstructionTree_ite..."
},
"QVMProfiler\0on_actionOpen_VMTrace_triggered\0"
"\0on_actionCloseProgram_triggered\0"
"on_VirtualInstructionTree_itemSelectionChanged"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_QVMProfiler[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
3, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 0, 29, 2, 0x08 /* Private */,
3, 0, 30, 2, 0x08 /* Private */,
4, 0, 31, 2, 0x08 /* Private */,
// slots: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
0 // eod
};
void QVMProfiler::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<QVMProfiler *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->on_actionOpen_VMTrace_triggered(); break;
case 1: _t->on_actionCloseProgram_triggered(); break;
case 2: _t->on_VirtualInstructionTree_itemSelectionChanged(); break;
default: ;
}
}
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject QVMProfiler::staticMetaObject = { {
QMetaObject::SuperData::link<QMainWindow::staticMetaObject>(),
qt_meta_stringdata_QVMProfiler.data,
qt_meta_data_QVMProfiler,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *QVMProfiler::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *QVMProfiler::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_QVMProfiler.stringdata0))
return static_cast<void*>(this);
return QMainWindow::qt_metacast(_clname);
}
int QVMProfiler::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 3)
qt_static_metacall(this, _c, _id, _a);
_id -= 3;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 3)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 3;
}
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

@ -0,0 +1,157 @@
/****************************************************************************
** Meta object code from reading C++ file 'framelesswindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../../DarkStyle/framelesswindow/framelesswindow.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'framelesswindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.1. 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_FramelessWindow_t {
QByteArrayData data[14];
char stringdata0[241];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_FramelessWindow_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_FramelessWindow_t qt_meta_stringdata_FramelessWindow = {
{
QT_MOC_LITERAL(0, 0, 15), // "FramelessWindow"
QT_MOC_LITERAL(1, 16, 14), // "setWindowTitle"
QT_MOC_LITERAL(2, 31, 0), // ""
QT_MOC_LITERAL(3, 32, 4), // "text"
QT_MOC_LITERAL(4, 37, 13), // "setWindowIcon"
QT_MOC_LITERAL(5, 51, 3), // "ico"
QT_MOC_LITERAL(6, 55, 26), // "on_applicationStateChanged"
QT_MOC_LITERAL(7, 82, 20), // "Qt::ApplicationState"
QT_MOC_LITERAL(8, 103, 5), // "state"
QT_MOC_LITERAL(9, 109, 25), // "on_minimizeButton_clicked"
QT_MOC_LITERAL(10, 135, 24), // "on_restoreButton_clicked"
QT_MOC_LITERAL(11, 160, 25), // "on_maximizeButton_clicked"
QT_MOC_LITERAL(12, 186, 22), // "on_closeButton_clicked"
QT_MOC_LITERAL(13, 209, 31) // "on_windowTitlebar_doubleClicked"
},
"FramelessWindow\0setWindowTitle\0\0text\0"
"setWindowIcon\0ico\0on_applicationStateChanged\0"
"Qt::ApplicationState\0state\0"
"on_minimizeButton_clicked\0"
"on_restoreButton_clicked\0"
"on_maximizeButton_clicked\0"
"on_closeButton_clicked\0"
"on_windowTitlebar_doubleClicked"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_FramelessWindow[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
8, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 1, 54, 2, 0x0a /* Public */,
4, 1, 57, 2, 0x0a /* Public */,
6, 1, 60, 2, 0x08 /* Private */,
9, 0, 63, 2, 0x08 /* Private */,
10, 0, 64, 2, 0x08 /* Private */,
11, 0, 65, 2, 0x08 /* Private */,
12, 0, 66, 2, 0x08 /* Private */,
13, 0, 67, 2, 0x08 /* Private */,
// slots: parameters
QMetaType::Void, QMetaType::QString, 3,
QMetaType::Void, QMetaType::QIcon, 5,
QMetaType::Void, 0x80000000 | 7, 8,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
0 // eod
};
void FramelessWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<FramelessWindow *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->setWindowTitle((*reinterpret_cast< const QString(*)>(_a[1]))); break;
case 1: _t->setWindowIcon((*reinterpret_cast< const QIcon(*)>(_a[1]))); break;
case 2: _t->on_applicationStateChanged((*reinterpret_cast< Qt::ApplicationState(*)>(_a[1]))); break;
case 3: _t->on_minimizeButton_clicked(); break;
case 4: _t->on_restoreButton_clicked(); break;
case 5: _t->on_maximizeButton_clicked(); break;
case 6: _t->on_closeButton_clicked(); break;
case 7: _t->on_windowTitlebar_doubleClicked(); break;
default: ;
}
}
}
QT_INIT_METAOBJECT const QMetaObject FramelessWindow::staticMetaObject = { {
QMetaObject::SuperData::link<QWidget::staticMetaObject>(),
qt_meta_stringdata_FramelessWindow.data,
qt_meta_data_FramelessWindow,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *FramelessWindow::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *FramelessWindow::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_FramelessWindow.stringdata0))
return static_cast<void*>(this);
return QWidget::qt_metacast(_clname);
}
int FramelessWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QWidget::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 8)
qt_static_metacall(this, _c, _id, _a);
_id -= 8;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 8)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 8;
}
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

@ -0,0 +1,134 @@
/****************************************************************************
** Meta object code from reading C++ file 'windowdragger.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.1)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../../../DarkStyle/framelesswindow/windowdragger.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'windowdragger.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.1. 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_WindowDragger_t {
QByteArrayData data[3];
char stringdata0[29];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_WindowDragger_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_WindowDragger_t qt_meta_stringdata_WindowDragger = {
{
QT_MOC_LITERAL(0, 0, 13), // "WindowDragger"
QT_MOC_LITERAL(1, 14, 13), // "doubleClicked"
QT_MOC_LITERAL(2, 28, 0) // ""
},
"WindowDragger\0doubleClicked\0"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_WindowDragger[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
1, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
1, // signalCount
// signals: name, argc, parameters, tag, flags
1, 0, 19, 2, 0x06 /* Public */,
// signals: parameters
QMetaType::Void,
0 // eod
};
void WindowDragger::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<WindowDragger *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->doubleClicked(); break;
default: ;
}
} else if (_c == QMetaObject::IndexOfMethod) {
int *result = reinterpret_cast<int *>(_a[0]);
{
using _t = void (WindowDragger::*)();
if (*reinterpret_cast<_t *>(_a[1]) == static_cast<_t>(&WindowDragger::doubleClicked)) {
*result = 0;
return;
}
}
}
Q_UNUSED(_a);
}
QT_INIT_METAOBJECT const QMetaObject WindowDragger::staticMetaObject = { {
QMetaObject::SuperData::link<QWidget::staticMetaObject>(),
qt_meta_stringdata_WindowDragger.data,
qt_meta_data_WindowDragger,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *WindowDragger::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *WindowDragger::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_WindowDragger.stringdata0))
return static_cast<void*>(this);
return QWidget::qt_metacast(_clname);
}
int WindowDragger::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QWidget::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 1)
qt_static_metacall(this, _c, _id, _a);
_id -= 1;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 1)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 1;
}
return _id;
}
// SIGNAL 0
void WindowDragger::doubleClicked()
{
QMetaObject::activate(this, &staticMetaObject, 0, nullptr);
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

Binary file not shown.

@ -0,0 +1,57 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>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_>G:\Qt\5.15.1\msvc2019_64\include;G:\Qt\5.15.1\msvc2019_64\include\QtWidgets;G:\Qt\5.15.1\msvc2019_64\include\QtGui;G:\Qt\5.15.1\msvc2019_64\include\QtANGLE;G:\Qt\5.15.1\msvc2019_64\include\QtCore;/include;G:\Qt\5.15.1\msvc2019_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_LIBS_>G:\Qt\5.15.1\msvc2019_64\lib\Qt5Widgets.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Gui.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Core.lib;G:\Qt\5.15.1\msvc2019_64\lib\qtmain.lib;shell32.lib</Qt_LIBS_>
<Qt_LIBPATH_>C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib</Qt_LIBPATH_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>G:/Qt/Docs/Qt-5.15.1</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>G:/Qt/5.15.1/msvc2019_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>G:/Qt/5.15.1/msvc2019_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>G:/Qt/5.15.1/msvc2019_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>G:/Qt/5.15.1/msvc2019_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>G:/Qt/5.15.1/msvc2019_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>G:/Qt/5.15.1/msvc2019_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>G:/Qt/5.15.1/msvc2019_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>G:/Qt/5.15.1/msvc2019_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.15.1</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);x64\Release\moc;x64\Release\uic</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.15.1</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=/-D([^\s=]+(=(\x22(\\\\|\\\x22|[^\x22])*\x22|\S+))?)/$1/;INCLUDEPATH=INCPATH/-(?:iquote|isystem|idirafter|I)\s*(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:(?:\/LIBPATH:|-L)(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/(?:\/LIBPATH:|-L)(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>release</QtBkup_QtBuildConfig>
<QtVersion>5.15.1</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>15</QtVersionMinor>
<QtVersionPatch>1</QtVersionPatch>
</PropertyGroup>
</Project>

@ -0,0 +1,7 @@
QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
QMAKE_CXX.QMAKE_MSC_VER = 1928
QMAKE_CXX.QMAKE_MSC_FULL_VER = 192829336
QMAKE_CXX.COMPILER_MACROS = \
QT_COMPILER_STDCXX \
QMAKE_MSC_VER \
QMAKE_MSC_FULL_VER

@ -0,0 +1 @@
C:\Users\_xeroxz\AppData\Local\Temp\044ojbft.3tm.designtime.props

File diff suppressed because one or more lines are too long

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

@ -0,0 +1 @@
Info: creating stash file D:\vmprofiler-qt\src\x64\Release\qmake\temp\.qmake.stash

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

@ -0,0 +1,57 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Qt_DEFINES_>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_>G:\Qt\5.15.1\msvc2019_64\include;G:\Qt\5.15.1\msvc2019_64\include\QtWidgets;G:\Qt\5.15.1\msvc2019_64\include\QtGui;G:\Qt\5.15.1\msvc2019_64\include\QtANGLE;G:\Qt\5.15.1\msvc2019_64\include\QtCore;/include;G:\Qt\5.15.1\msvc2019_64\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
<Qt_LIBS_>G:\Qt\5.15.1\msvc2019_64\lib\Qt5Widgets.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Gui.lib;G:\Qt\5.15.1\msvc2019_64\lib\Qt5Core.lib;G:\Qt\5.15.1\msvc2019_64\lib\qtmain.lib;shell32.lib</Qt_LIBS_>
<Qt_LIBPATH_>C:\openssl\lib;C:\Utils\my_sql\mysql-5.7.25-winx64\lib;C:\Utils\postgresql\pgsql\lib</Qt_LIBPATH_>
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
<QMake_QT_INSTALL_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_PREFIX_>
<QMake_QT_INSTALL_ARCHDATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_ARCHDATA_>
<QMake_QT_INSTALL_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_INSTALL_DATA_>
<QMake_QT_INSTALL_DOCS_>G:/Qt/Docs/Qt-5.15.1</QMake_QT_INSTALL_DOCS_>
<QMake_QT_INSTALL_HEADERS_>G:/Qt/5.15.1/msvc2019_64/include</QMake_QT_INSTALL_HEADERS_>
<QMake_QT_INSTALL_LIBS_>G:/Qt/5.15.1/msvc2019_64/lib</QMake_QT_INSTALL_LIBS_>
<QMake_QT_INSTALL_LIBEXECS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_LIBEXECS_>
<QMake_QT_INSTALL_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_INSTALL_BINS_>
<QMake_QT_INSTALL_TESTS_>G:/Qt/5.15.1/msvc2019_64/tests</QMake_QT_INSTALL_TESTS_>
<QMake_QT_INSTALL_PLUGINS_>G:/Qt/5.15.1/msvc2019_64/plugins</QMake_QT_INSTALL_PLUGINS_>
<QMake_QT_INSTALL_IMPORTS_>G:/Qt/5.15.1/msvc2019_64/imports</QMake_QT_INSTALL_IMPORTS_>
<QMake_QT_INSTALL_QML_>G:/Qt/5.15.1/msvc2019_64/qml</QMake_QT_INSTALL_QML_>
<QMake_QT_INSTALL_TRANSLATIONS_>G:/Qt/5.15.1/msvc2019_64/translations</QMake_QT_INSTALL_TRANSLATIONS_>
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
<QMake_QT_INSTALL_EXAMPLES_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_EXAMPLES_>
<QMake_QT_INSTALL_DEMOS_>G:/Qt/Examples/Qt-5.15.1</QMake_QT_INSTALL_DEMOS_>
<QMake_QT_HOST_PREFIX_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_PREFIX_>
<QMake_QT_HOST_DATA_>G:/Qt/5.15.1/msvc2019_64</QMake_QT_HOST_DATA_>
<QMake_QT_HOST_BINS_>G:/Qt/5.15.1/msvc2019_64/bin</QMake_QT_HOST_BINS_>
<QMake_QT_HOST_LIBS_>G:/Qt/5.15.1/msvc2019_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.15.1</QMake_QT_VERSION_>
<Qt_INCLUDEPATH_
>$(Qt_INCLUDEPATH_);x64\Release\moc;x64\Release\uic</Qt_INCLUDEPATH_>
<QtBkup_QtInstall
>5.15.1</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=/-D([^\s=]+(=(\x22(\\\\|\\\x22|[^\x22])*\x22|\S+))?)/$1/;INCLUDEPATH=INCPATH/-(?:iquote|isystem|idirafter|I)\s*(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBS=/(?:(?:\/LIBPATH:|-L)(?:\x22[^\x22]+\x22|[^\s]+))|(\x22[^\x22]+\x22|[^\s]+)/$1/;LIBPATH=LIBS/(?:\/LIBPATH:|-L)(\x22[^\x22]+\x22|[^\s]+)/$1/</QtBkup_QtVars>
<QtBkup_QMakeCodeLines
></QtBkup_QMakeCodeLines>
<QtBkup_QtBuildConfig
>release</QtBkup_QtBuildConfig>
<QtVersion>5.15.1</QtVersion>
<QtVersionMajor>5</QtVersionMajor>
<QtVersionMinor>15</QtVersionMinor>
<QtVersionPatch>1</QtVersionPatch>
</PropertyGroup>
</Project>

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save