@ -1,3 +1,9 @@
|
|||||||
[submodule "dependencies/vmprofiler"]
|
[submodule "dependencies/vmprofiler"]
|
||||||
path = dependencies/vmprofiler
|
path = dependencies/vmprofiler
|
||||||
url = https://githacks.org/vmp2/vmprofiler.git
|
url = https://githacks.org/vmp2/vmprofiler.git
|
||||||
|
[submodule "dependencies/DarkStyle"]
|
||||||
|
path = dependencies/DarkStyle
|
||||||
|
url = https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle.git
|
||||||
|
[submodule "dependencies/ia32-doc"]
|
||||||
|
path = dependencies/ia32-doc
|
||||||
|
url = https://github.com/wbenny/ia32-doc.git
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 79425f53ef154ea33faf4e2964f5762645b54d91
|
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 77e021b690633e6274f4ebfc3734fdbd0be3bdf7
|
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 227 KiB |
@ -1,40 +0,0 @@
|
|||||||
# 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
|
|
@ -1,73 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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
|
|
@ -1,104 +0,0 @@
|
|||||||
# 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.
|
|
@ -1,28 +0,0 @@
|
|||||||
<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>
|
|
@ -1,343 +0,0 @@
|
|||||||
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);
|
|
||||||
}
|
|
Before Width: | Height: | Size: 310 B |
Before Width: | Height: | Size: 358 B |
Before Width: | Height: | Size: 207 B |
Before Width: | Height: | Size: 313 B |
Before Width: | Height: | Size: 176 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 121 B |
Before Width: | Height: | Size: 286 B |
Before Width: | Height: | Size: 286 B |
Before Width: | Height: | Size: 119 B |
Before Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 422 B |
Before Width: | Height: | Size: 370 B |
Before Width: | Height: | Size: 617 B |
Before Width: | Height: | Size: 616 B |
Before Width: | Height: | Size: 310 B |
Before Width: | Height: | Size: 538 B |
Before Width: | Height: | Size: 537 B |
Before Width: | Height: | Size: 404 B |
Before Width: | Height: | Size: 424 B |
Before Width: | Height: | Size: 303 B |
@ -1,38 +0,0 @@
|
|||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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
|
|
@ -1,8 +0,0 @@
|
|||||||
<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>
|
|
@ -1,458 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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);
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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
|
|
@ -1,304 +0,0 @@
|
|||||||
<?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>1737</width>
|
|
||||||
<height>1157</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 Inspector (v1.6 BETA)</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>
|
|
@ -1,56 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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();
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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
|
|
Before Width: | Height: | Size: 422 B |
Before Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 364 B |
Before Width: | Height: | Size: 404 B |
@ -1,40 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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();
|
|
||||||
}
|
|
@ -1,23 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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; }
|
|
@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
###############################################################################
|
|
||||||
# #
|
|
||||||
# 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
|
|
@ -1,645 +0,0 @@
|
|||||||
<?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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
|
||||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
|
||||||
p, li { white-space: pre-wrap; }
|
|
||||||
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
|
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'.SF NS Text'; font-size:13pt;">test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br /></span></p></body></html></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>
|
|
Before Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 128 KiB |
Before Width: | Height: | Size: 22 KiB |
@ -1,267 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<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>
|
|
||||||
<ClCompile Include="qvminspector.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="qvirt_instrs.cpp">
|
|
||||||
<Filter>Source Files</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\Zydis">
|
|
||||||
<UniqueIdentifier>{da03ed08-340b-423c-875d-1167c5575937}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files\Zydis\Internal">
|
|
||||||
<UniqueIdentifier>{372a780d-f944-4786-acbf-e6741e5caf7a}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files\Zydis\Generated">
|
|
||||||
<UniqueIdentifier>{fa365433-05db-4072-b63d-493cca4f1ca7}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files\Zycore">
|
|
||||||
<UniqueIdentifier>{b4f5c8c6-4ab4-4034-96e6-c011a1eeb0cf}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Header Files\Zycore\API">
|
|
||||||
<UniqueIdentifier>{6a0de737-6e61-4611-a035-82c1aff09648}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtRcc Include="DarkStyle\darkstyle.qrc">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</QtRcc>
|
|
||||||
<QtRcc Include="DarkStyle\framelesswindow.qrc">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</QtRcc>
|
|
||||||
<QtRcc Include="qvminspector.qrc">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</QtRcc>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<QtUic Include="DarkStyle\framelesswindow\framelesswindow.ui">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
<QtUic Include="qvminspector.ui">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</QtUic>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<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>
|
|
||||||
<QtMoc Include="qvminspector.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</QtMoc>
|
|
||||||
<QtMoc Include="qvirt_instrs.h">
|
|
||||||
<Filter>Header Files</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\dependencies\zydis\include\Zydis\Decoder.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\DecoderTypes.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Formatter.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\FormatterBuffer.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\MetaInfo.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Mnemonic.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Register.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\SharedTypes.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\ShortString.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Status.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Utils.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Zydis.h">
|
|
||||||
<Filter>Header Files\Zydis</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Internal\DecoderData.h">
|
|
||||||
<Filter>Header Files\Zydis\Internal</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Internal\FormatterATT.h">
|
|
||||||
<Filter>Header Files\Zydis\Internal</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Internal\FormatterBase.h">
|
|
||||||
<Filter>Header Files\Zydis\Internal</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Internal\FormatterIntel.h">
|
|
||||||
<Filter>Header Files\Zydis\Internal</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Internal\SharedData.h">
|
|
||||||
<Filter>Header Files\Zydis\Internal</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Internal\String.h">
|
|
||||||
<Filter>Header Files\Zydis\Internal</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Generated\EnumInstructionCategory.h">
|
|
||||||
<Filter>Header Files\Zydis\Generated</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Generated\EnumISAExt.h">
|
|
||||||
<Filter>Header Files\Zydis\Generated</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Generated\EnumISASet.h">
|
|
||||||
<Filter>Header Files\Zydis\Generated</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Generated\EnumMnemonic.h">
|
|
||||||
<Filter>Header Files\Zydis\Generated</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\include\Zydis\Generated\EnumRegister.h">
|
|
||||||
<Filter>Header Files\Zydis\Generated</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\API\Memory.h">
|
|
||||||
<Filter>Header Files\Zycore\API</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\API\Synchronization.h">
|
|
||||||
<Filter>Header Files\Zycore\API</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\API\Terminal.h">
|
|
||||||
<Filter>Header Files\Zycore\API</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\API\Thread.h">
|
|
||||||
<Filter>Header Files\Zycore\API</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Allocator.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\ArgParse.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Bitset.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Comparison.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Defines.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Format.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\LibC.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\List.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Object.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Status.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\String.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Types.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Vector.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include\Zycore\Zycore.h">
|
|
||||||
<Filter>Header Files\Zycore</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\msvc\ZycoreExportConfig.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\dependencies\vmprofiler\dependencies\zydis\msvc\ZydisExportConfig.h">
|
|
||||||
<Filter>Header Files</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>
|
|
||||||
<ItemGroup>
|
|
||||||
<None Include="..\.clang-format">
|
|
||||||
<Filter>Resource Files</Filter>
|
|
||||||
</None>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
@ -0,0 +1,102 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<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>{3be16123-7e90-4e97-86f4-92801c3f4ede}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files\darkstyle\framelesswindow">
|
||||||
|
<UniqueIdentifier>{5a2542d9-b470-4c74-9c19-80a1e210d6ab}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files\darkstyle">
|
||||||
|
<UniqueIdentifier>{fdddc2b4-b9cf-403b-96b3-604807a6d797}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files\darkstyle\framelesswindow">
|
||||||
|
<UniqueIdentifier>{12186088-c49f-41bf-b3c9-b41a8d847495}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="src\main.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\qvirt_instrs.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\qvminspector.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="dependencies\DarkStyle\framelesswindow\framelesswindow.cpp">
|
||||||
|
<Filter>Source Files\darkstyle\framelesswindow</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="dependencies\DarkStyle\framelesswindow\windowdragger.cpp">
|
||||||
|
<Filter>Source Files\darkstyle\framelesswindow</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="dependencies\DarkStyle\DarkStyle.cpp">
|
||||||
|
<Filter>Source Files\darkstyle</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtMoc Include="src\qvirt_instrs.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<QtMoc Include="src\qvminspector.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<QtMoc Include="dependencies\DarkStyle\DarkStyle.h">
|
||||||
|
<Filter>Header Files\darkstyle</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<QtMoc Include="dependencies\DarkStyle\framelesswindow\framelesswindow.h">
|
||||||
|
<Filter>Header Files\darkstyle\framelesswindow</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<QtMoc Include="dependencies\DarkStyle\framelesswindow\windowdragger.h">
|
||||||
|
<Filter>Header Files\darkstyle\framelesswindow</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtRcc Include="dependencies\DarkStyle\darkstyle.qrc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</QtRcc>
|
||||||
|
<QtRcc Include="dependencies\DarkStyle\framelesswindow.qrc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</QtRcc>
|
||||||
|
<QtRcc Include="resources\qvminspector.qrc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</QtRcc>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtUic Include="dependencies\DarkStyle\framelesswindow\framelesswindow.ui">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</QtUic>
|
||||||
|
<QtUic Include="resources\qvminspector.ui">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</QtUic>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Image Include="resources\icon.ico">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</Image>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="resources\icon.rc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</ResourceCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include=".clang-format">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="dependencies\ia32-doc\out\ia32.hpp">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|