Added demos.
This commit is contained in:
5
bc.h
5
bc.h
@@ -578,9 +578,8 @@ public:
|
||||
|
||||
Reg_Charger_Rev_Charger = 0x56, // -
|
||||
|
||||
//{%Endregion}
|
||||
|
||||
// {%Region Motor}
|
||||
|
||||
|
||||
ID_Motor = 0x20,
|
||||
// ID_Motor_Response = 0x08,
|
||||
Motor_Assist_Level = 0x09, // [Unit:%, Range:-100..100, Factor:1.5625] !!! Signed !!!
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
<qresource prefix="/">
|
||||
<file alias="bikeinfo.xml">resources/bikeinfo.xml</file>
|
||||
<file alias="bionxcontrol.qss">resources/bionxcontrol.qss</file>
|
||||
<file alias="bionx_akku.png">resources/bionx_akku.png</file>
|
||||
<file alias="claude_dark_mode.qss">resources/claude_dark_mode.qss</file>
|
||||
<file alias="claude_light_mode.qss">resources/claude_light_mode.qss</file>
|
||||
<file alias="bionx_akku.png">resources/bionx_akku.png</file>
|
||||
<file alias="bionx_console.png">resources/bionx_console.png</file>
|
||||
<file alias="bionx_motor.png">resources/bionx_motor.png</file>
|
||||
<file alias="exit.png">resources/exit.png</file>
|
||||
@@ -11,6 +13,6 @@
|
||||
<file alias="splash.png">resources/splash.png</file>
|
||||
<file alias="connect.png">resources/connect.png</file>
|
||||
<file alias="connected.png">resources/connected.png</file>
|
||||
<file alias="disconnected.png">resources/disconnected.png</file>
|
||||
<file alias="disconnected.png">resources/disconnected.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
224
doc/claude_fluent_light/.qtcreator/claude_fluent_light.pro.user
Normal file
224
doc/claude_fluent_light/.qtcreator/claude_fluent_light.pro.user
Normal file
@@ -0,0 +1,224 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 18.0.1, 2025-12-30T23:32:00. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{350f6538-4791-42f9-b43d-6ea1a7b22b7b}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="qlonglong">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoDetect">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.LineEndingBehavior">1</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
|
||||
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||
</valuemap>
|
||||
<value type="bool" key="AutoTest.ApplyFilter">false</value>
|
||||
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
|
||||
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||
<valuemap type="QVariantMap" key="ClangTools">
|
||||
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||
<value type="int" key="ClangTools.ParallelJobs">16</value>
|
||||
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="RcSync">0</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="DeviceType">Desktop</value>
|
||||
<value type="bool" key="HasPerBcDcs">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6101.win64_mingw_kit</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\syncMePlease\projects.now\claude_fluent_light\build\Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/syncMePlease/projects.now/claude_fluent_light/build/Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/claude_fluent_light/claude_fluent_light.pro</value>
|
||||
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/claude_fluent_light/claude_fluent_light.pro</value>
|
||||
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="qlonglong">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
26
doc/claude_fluent_light/claude_fluent_light.pro
Normal file
26
doc/claude_fluent_light/claude_fluent_light.pro
Normal file
@@ -0,0 +1,26 @@
|
||||
QT += core gui
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
CONFIG += c++17
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
fluentwidget.cpp \
|
||||
main.cpp \
|
||||
mainwindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
fluentwidget.h \
|
||||
mainwindow.h
|
||||
|
||||
FORMS += \
|
||||
mainwindow.ui
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
2
doc/claude_fluent_light/fluentwidget.cpp
Normal file
2
doc/claude_fluent_light/fluentwidget.cpp
Normal file
@@ -0,0 +1,2 @@
|
||||
#include "fluentwidget.h"
|
||||
|
||||
466
doc/claude_fluent_light/fluentwidget.h
Normal file
466
doc/claude_fluent_light/fluentwidget.h
Normal file
@@ -0,0 +1,466 @@
|
||||
// FluentWidget.h
|
||||
#ifndef FLUENTWIDGET_H
|
||||
#define FLUENTWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QPushButton>
|
||||
#include <QLabel>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QGridLayout>
|
||||
#include <QPainter>
|
||||
#include <QMouseEvent>
|
||||
#include <QPropertyAnimation>
|
||||
#include <QGraphicsDropShadowEffect>
|
||||
#include <QLineEdit>
|
||||
#include <QSlider>
|
||||
#include <QCheckBox>
|
||||
#include <QDebug>
|
||||
|
||||
// Fluent Card Widget mit Hover-Effekt
|
||||
class FluentCard : public QWidget {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(qreal elevationFactor READ elevationFactor WRITE setElevationFactor)
|
||||
|
||||
public:
|
||||
FluentCard(const QString& title, const QString& subtitle,
|
||||
const QColor& accentColor, QWidget* parent = nullptr)
|
||||
: QWidget(parent), m_title(title), m_subtitle(subtitle),
|
||||
m_accentColor(accentColor), m_elevationFactor(0.0) {
|
||||
|
||||
setFixedSize(280, 140);
|
||||
setMouseTracking(true);
|
||||
}
|
||||
|
||||
qreal elevationFactor() const { return m_elevationFactor; }
|
||||
void setElevationFactor(qreal factor)
|
||||
{
|
||||
qDebug() << " --- set: " << factor;
|
||||
m_elevationFactor = factor;
|
||||
update();
|
||||
}
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent*) override {
|
||||
QPainter painter(this);
|
||||
painter.setRenderHint(QPainter::Antialiasing);
|
||||
|
||||
// Draw shadow manually (multiple layers for smooth shadow)
|
||||
int shadowSize = 2 + m_elevationFactor * 10;
|
||||
int shadowOffset = m_elevationFactor * 4;
|
||||
|
||||
for (int i = shadowSize; i > 0; i--) {
|
||||
int alpha = 15 * (1.0 - i / (qreal)shadowSize);
|
||||
QColor shadowColor(0, 0, 0, alpha);
|
||||
painter.setPen(Qt::NoPen);
|
||||
painter.setBrush(shadowColor);
|
||||
painter.drawRoundedRect(
|
||||
rect().adjusted(-i, -i + shadowOffset, i, i + shadowOffset),
|
||||
8 + i, 8 + i
|
||||
);
|
||||
}
|
||||
|
||||
// Card background
|
||||
painter.setBrush(QColor(43, 43, 43)); // Dark surface
|
||||
painter.setPen(QPen(QColor(63, 63, 63), 1)); // Border
|
||||
painter.drawRoundedRect(rect().adjusted(1, 1, -1, -1), 8, 8);
|
||||
|
||||
// Accent icon circle
|
||||
QColor iconBg = m_accentColor;
|
||||
iconBg.setAlpha(40);
|
||||
painter.setBrush(iconBg);
|
||||
painter.setPen(Qt::NoPen);
|
||||
painter.drawEllipse(20, 20, 48, 48);
|
||||
|
||||
// Icon (simplified)
|
||||
painter.setPen(m_accentColor);
|
||||
QFont iconFont = font();
|
||||
iconFont.setPointSize(24);
|
||||
iconFont.setBold(true);
|
||||
painter.setFont(iconFont);
|
||||
painter.drawText(QRect(20, 20, 48, 48), Qt::AlignCenter, "📄");
|
||||
|
||||
// Title
|
||||
painter.setPen(Qt::white);
|
||||
QFont titleFont = font();
|
||||
titleFont.setPointSize(12);
|
||||
titleFont.setWeight(QFont::DemiBold);
|
||||
painter.setFont(titleFont);
|
||||
painter.drawText(QRect(20, 80, width() - 40, 25),
|
||||
Qt::AlignLeft | Qt::AlignVCenter, m_title);
|
||||
|
||||
// Subtitle
|
||||
painter.setPen(QColor(176, 176, 176));
|
||||
QFont subFont = font();
|
||||
subFont.setPointSize(9);
|
||||
painter.setFont(subFont);
|
||||
painter.drawText(QRect(20, 105, width() - 40, 20),
|
||||
Qt::AlignLeft | Qt::AlignVCenter, m_subtitle);
|
||||
}
|
||||
|
||||
void enterEvent(QEnterEvent*) override {
|
||||
QPropertyAnimation* anim = new QPropertyAnimation(this, "elevationFactor");
|
||||
anim->setDuration(200);
|
||||
anim->setEasingCurve(QEasingCurve::OutCubic);
|
||||
anim->setStartValue(m_elevationFactor);
|
||||
anim->setEndValue(1.0);
|
||||
anim->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
void leaveEvent(QEvent*) override {
|
||||
QPropertyAnimation* anim = new QPropertyAnimation(this, "elevationFactor");
|
||||
anim->setDuration(200);
|
||||
anim->setEasingCurve(QEasingCurve::OutCubic);
|
||||
anim->setStartValue(m_elevationFactor);
|
||||
anim->setEndValue(0.0);
|
||||
anim->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
private:
|
||||
QString m_title;
|
||||
QString m_subtitle;
|
||||
QColor m_accentColor;
|
||||
qreal m_elevationFactor;
|
||||
};
|
||||
|
||||
// Fluent Button mit Acrylic-Style
|
||||
class FluentButton : public QPushButton {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum ButtonStyle { Primary, Secondary, Accent };
|
||||
|
||||
FluentButton(const QString& text, ButtonStyle style = Secondary,
|
||||
QWidget* parent = nullptr)
|
||||
: QPushButton(text, parent), m_style(style), m_pressed(false) {
|
||||
|
||||
setMinimumHeight(32);
|
||||
setCursor(Qt::PointingHandCursor);
|
||||
updateStyle();
|
||||
}
|
||||
|
||||
protected:
|
||||
void enterEvent(QEnterEvent*) override {
|
||||
updateStyle(true);
|
||||
}
|
||||
|
||||
void leaveEvent(QEvent*) override {
|
||||
updateStyle(false);
|
||||
}
|
||||
|
||||
void mousePressEvent(QMouseEvent* e) override {
|
||||
m_pressed = true;
|
||||
QPushButton::mousePressEvent(e);
|
||||
}
|
||||
|
||||
void mouseReleaseEvent(QMouseEvent* e) override {
|
||||
m_pressed = false;
|
||||
QPushButton::mouseReleaseEvent(e);
|
||||
}
|
||||
|
||||
private:
|
||||
void updateStyle(bool hovered = false) {
|
||||
QString style;
|
||||
|
||||
switch (m_style) {
|
||||
case Primary:
|
||||
if (hovered) {
|
||||
style = "QPushButton { background-color: #106EBE; color: white; "
|
||||
"border: none; border-radius: 4px; font-size: 9pt; "
|
||||
"padding: 6px 16px; font-weight: 500; }";
|
||||
} else {
|
||||
style = "QPushButton { background-color: #0078D4; color: white; "
|
||||
"border: none; border-radius: 4px; font-size: 9pt; "
|
||||
"padding: 6px 16px; font-weight: 500; }";
|
||||
}
|
||||
break;
|
||||
|
||||
case Secondary:
|
||||
if (hovered) {
|
||||
style = "QPushButton { background-color: #3A3A3A; color: white; "
|
||||
"border: 1px solid #5A5A5A; border-radius: 4px; "
|
||||
"font-size: 9pt; padding: 6px 16px; font-weight: 500; }";
|
||||
} else {
|
||||
style = "QPushButton { background-color: #2B2B2B; color: white; "
|
||||
"border: 1px solid #3F3F3F; border-radius: 4px; "
|
||||
"font-size: 9pt; padding: 6px 16px; font-weight: 500; }";
|
||||
}
|
||||
break;
|
||||
|
||||
case Accent:
|
||||
if (hovered) {
|
||||
style = "QPushButton { background-color: rgba(0, 120, 212, 0.15); "
|
||||
"color: #60CDFF; border: none; border-radius: 4px; "
|
||||
"font-size: 9pt; padding: 6px 16px; font-weight: 500; }";
|
||||
} else {
|
||||
style = "QPushButton { background-color: transparent; "
|
||||
"color: #60CDFF; border: none; border-radius: 4px; "
|
||||
"font-size: 9pt; padding: 6px 16px; font-weight: 500; }";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
setStyleSheet(style);
|
||||
}
|
||||
|
||||
ButtonStyle m_style;
|
||||
bool m_pressed;
|
||||
};
|
||||
|
||||
// Fluent Toggle Switch
|
||||
class FluentToggle : public QWidget {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(int position READ position WRITE setPosition)
|
||||
|
||||
public:
|
||||
FluentToggle(QWidget* parent = nullptr)
|
||||
: QWidget(parent), m_checked(false), m_position(2) {
|
||||
|
||||
setFixedSize(44, 20);
|
||||
setCursor(Qt::PointingHandCursor);
|
||||
}
|
||||
|
||||
bool isChecked() const { return m_checked; }
|
||||
|
||||
void setChecked(bool checked) {
|
||||
if (m_checked != checked) {
|
||||
m_checked = checked;
|
||||
animateToggle();
|
||||
emit toggled(m_checked);
|
||||
}
|
||||
}
|
||||
|
||||
int position() const { return m_position; }
|
||||
void setPosition(int pos) {
|
||||
m_position = pos;
|
||||
update();
|
||||
}
|
||||
|
||||
signals:
|
||||
void toggled(bool checked);
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent*) override {
|
||||
QPainter painter(this);
|
||||
painter.setRenderHint(QPainter::Antialiasing);
|
||||
|
||||
// Track
|
||||
QColor trackColor = m_checked ? QColor("#0078D4") : QColor("#3F3F3F");
|
||||
painter.setPen(Qt::NoPen);
|
||||
painter.setBrush(trackColor);
|
||||
painter.drawRoundedRect(rect(), 10, 10);
|
||||
|
||||
// Thumb
|
||||
painter.setBrush(Qt::white);
|
||||
painter.drawEllipse(m_position, 2, 16, 16);
|
||||
}
|
||||
|
||||
void mousePressEvent(QMouseEvent*) override {
|
||||
setChecked(!m_checked);
|
||||
}
|
||||
|
||||
private:
|
||||
void animateToggle() {
|
||||
QPropertyAnimation* anim = new QPropertyAnimation(this, "position");
|
||||
anim->setDuration(150);
|
||||
anim->setEasingCurve(QEasingCurve::InOutQuad);
|
||||
anim->setEndValue(m_checked ? 26 : 2);
|
||||
anim->start(QAbstractAnimation::DeleteWhenStopped);
|
||||
}
|
||||
|
||||
bool m_checked;
|
||||
int m_position;
|
||||
};
|
||||
|
||||
// Main Fluent Widget
|
||||
class FluentWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
FluentWidget(QWidget* parent = nullptr) : QWidget(parent) {
|
||||
setupUI();
|
||||
applyFluentDarkTheme();
|
||||
}
|
||||
|
||||
private:
|
||||
void setupUI() {
|
||||
QVBoxLayout* mainLayout = new QVBoxLayout(this);
|
||||
mainLayout->setContentsMargins(0, 0, 0, 0);
|
||||
mainLayout->setSpacing(0);
|
||||
|
||||
// Title Bar
|
||||
QWidget* titleBar = createTitleBar();
|
||||
mainLayout->addWidget(titleBar);
|
||||
|
||||
// Content Area
|
||||
QWidget* content = new QWidget();
|
||||
content->setStyleSheet("background-color: #202020;");
|
||||
|
||||
QVBoxLayout* contentLayout = new QVBoxLayout(content);
|
||||
contentLayout->setContentsMargins(40, 40, 40, 40);
|
||||
contentLayout->setSpacing(32);
|
||||
|
||||
// Header
|
||||
QLabel* titleLabel = new QLabel("Fluent Design System");
|
||||
titleLabel->setStyleSheet("color: white; font-size: 28pt; font-weight: 600;");
|
||||
contentLayout->addWidget(titleLabel);
|
||||
|
||||
QLabel* subtitleLabel = new QLabel("Modern Windows 11 inspired UI components");
|
||||
subtitleLabel->setStyleSheet("color: #B0B0B0; font-size: 11pt;");
|
||||
contentLayout->addWidget(subtitleLabel);
|
||||
|
||||
contentLayout->addSpacing(20);
|
||||
|
||||
// Cards Grid
|
||||
QWidget* cardsWidget = new QWidget();
|
||||
QGridLayout* cardsLayout = new QGridLayout(cardsWidget);
|
||||
cardsLayout->setSpacing(20);
|
||||
|
||||
cardsLayout->addWidget(new FluentCard("Documents", "128 files",
|
||||
QColor("#0078D4")), 0, 0);
|
||||
cardsLayout->addWidget(new FluentCard("Photos", "1,234 items",
|
||||
QColor("#8764B8")), 0, 1);
|
||||
cardsLayout->addWidget(new FluentCard("Music", "89 songs",
|
||||
QColor("#00B7C3")), 0, 2);
|
||||
cardsLayout->addWidget(new FluentCard("Videos", "24 clips",
|
||||
QColor("#E3008C")), 1, 0);
|
||||
cardsLayout->addWidget(new FluentCard("Downloads", "45 items",
|
||||
QColor("#00CC6A")), 1, 1);
|
||||
cardsLayout->addWidget(new FluentCard("Projects", "12 folders",
|
||||
QColor("#FF8C00")), 1, 2);
|
||||
|
||||
contentLayout->addWidget(cardsWidget);
|
||||
|
||||
contentLayout->addSpacing(20);
|
||||
|
||||
// Controls Section
|
||||
QWidget* controlsPanel = createControlsPanel();
|
||||
contentLayout->addWidget(controlsPanel);
|
||||
|
||||
contentLayout->addStretch();
|
||||
|
||||
mainLayout->addWidget(content);
|
||||
}
|
||||
|
||||
QWidget* createTitleBar() {
|
||||
QWidget* titleBar = new QWidget();
|
||||
titleBar->setFixedHeight(48);
|
||||
titleBar->setStyleSheet("background-color: #2B2B2B; border-bottom: 1px solid #3F3F3F;");
|
||||
|
||||
QHBoxLayout* layout = new QHBoxLayout(titleBar);
|
||||
layout->setContentsMargins(16, 0, 16, 0);
|
||||
|
||||
// App Icon
|
||||
QLabel* iconLabel = new QLabel("💎");
|
||||
iconLabel->setStyleSheet("font-size: 20pt;");
|
||||
layout->addWidget(iconLabel);
|
||||
|
||||
QLabel* appName = new QLabel("Fluent Demo");
|
||||
appName->setStyleSheet("color: white; font-size: 10pt; font-weight: 600;");
|
||||
layout->addWidget(appName);
|
||||
|
||||
layout->addStretch();
|
||||
|
||||
// Action Buttons
|
||||
QPushButton* searchBtn = new QPushButton("🔍");
|
||||
searchBtn->setFixedSize(32, 32);
|
||||
searchBtn->setStyleSheet("QPushButton { background: transparent; color: white; "
|
||||
"border: none; border-radius: 4px; font-size: 14pt; }"
|
||||
"QPushButton:hover { background: #3A3A3A; }");
|
||||
layout->addWidget(searchBtn);
|
||||
|
||||
QPushButton* notifBtn = new QPushButton("🔔");
|
||||
notifBtn->setFixedSize(32, 32);
|
||||
notifBtn->setStyleSheet("QPushButton { background: transparent; color: white; "
|
||||
"border: none; border-radius: 4px; font-size: 14pt; }"
|
||||
"QPushButton:hover { background: #3A3A3A; }");
|
||||
layout->addWidget(notifBtn);
|
||||
|
||||
QPushButton* userBtn = new QPushButton("👤");
|
||||
userBtn->setFixedSize(32, 32);
|
||||
userBtn->setStyleSheet("QPushButton { background: transparent; color: white; "
|
||||
"border: none; border-radius: 4px; font-size: 14pt; }"
|
||||
"QPushButton:hover { background: #3A3A3A; }");
|
||||
layout->addWidget(userBtn);
|
||||
|
||||
return titleBar;
|
||||
}
|
||||
|
||||
QWidget* createControlsPanel() {
|
||||
QWidget* panel = new QWidget();
|
||||
panel->setStyleSheet("background-color: #2B2B2B; border: 1px solid #3F3F3F; "
|
||||
"border-radius: 8px;");
|
||||
|
||||
QVBoxLayout* layout = new QVBoxLayout(panel);
|
||||
layout->setContentsMargins(24, 24, 24, 24);
|
||||
layout->setSpacing(24);
|
||||
|
||||
// Section Title
|
||||
QLabel* sectionTitle = new QLabel("Controls");
|
||||
sectionTitle->setStyleSheet("color: white; font-size: 16pt; font-weight: 600;");
|
||||
layout->addWidget(sectionTitle);
|
||||
|
||||
// Buttons Demo
|
||||
QLabel* btnLabel = new QLabel("Buttons");
|
||||
btnLabel->setStyleSheet("color: #B0B0B0; font-size: 10pt; font-weight: 600;");
|
||||
layout->addWidget(btnLabel);
|
||||
|
||||
QHBoxLayout* btnLayout = new QHBoxLayout();
|
||||
btnLayout->setSpacing(12);
|
||||
btnLayout->addWidget(new FluentButton("Primary", FluentButton::Primary));
|
||||
btnLayout->addWidget(new FluentButton("Secondary", FluentButton::Secondary));
|
||||
btnLayout->addWidget(new FluentButton("Accent", FluentButton::Accent));
|
||||
btnLayout->addStretch();
|
||||
layout->addLayout(btnLayout);
|
||||
|
||||
// Slider Demo
|
||||
QLabel* sliderLabel = new QLabel("Slider");
|
||||
sliderLabel->setStyleSheet("color: #B0B0B0; font-size: 10pt; font-weight: 600;");
|
||||
layout->addWidget(sliderLabel);
|
||||
|
||||
QSlider* slider = new QSlider(Qt::Horizontal);
|
||||
slider->setRange(0, 100);
|
||||
slider->setValue(50);
|
||||
slider->setStyleSheet(
|
||||
"QSlider::groove:horizontal { background: #3F3F3F; height: 4px; "
|
||||
"border-radius: 2px; }"
|
||||
"QSlider::handle:horizontal { background: #0078D4; width: 16px; "
|
||||
"height: 16px; margin: -6px 0; border-radius: 8px; }"
|
||||
"QSlider::add-page:horizontal { background: #3F3F3F; }"
|
||||
"QSlider::sub-page:horizontal { background: #0078D4; }"
|
||||
);
|
||||
layout->addWidget(slider);
|
||||
|
||||
// Toggle Demo
|
||||
QLabel* toggleLabel = new QLabel("Toggles");
|
||||
toggleLabel->setStyleSheet("color: #B0B0B0; font-size: 10pt; font-weight: 600;");
|
||||
layout->addWidget(toggleLabel);
|
||||
|
||||
QStringList toggleTexts = {"Enable notifications", "Dark mode", "Auto-save"};
|
||||
for (const QString& text : toggleTexts) {
|
||||
QHBoxLayout* toggleRow = new QHBoxLayout();
|
||||
|
||||
QLabel* label = new QLabel(text);
|
||||
label->setStyleSheet("color: white; font-size: 10pt;");
|
||||
toggleRow->addWidget(label);
|
||||
|
||||
toggleRow->addStretch();
|
||||
|
||||
FluentToggle* toggle = new FluentToggle();
|
||||
if (text == "Dark mode") {
|
||||
toggle->setChecked(true);
|
||||
}
|
||||
toggleRow->addWidget(toggle);
|
||||
|
||||
layout->addLayout(toggleRow);
|
||||
}
|
||||
|
||||
return panel;
|
||||
}
|
||||
|
||||
void applyFluentDarkTheme() {
|
||||
setStyleSheet("QWidget { font-family: 'Segoe UI', 'Noto Sans', sans-serif; }");
|
||||
}
|
||||
};
|
||||
|
||||
#endif // FLUENTWIDGET_H
|
||||
37
doc/claude_fluent_light/main.cpp
Normal file
37
doc/claude_fluent_light/main.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
|
||||
// main.cpp
|
||||
#include <QApplication>
|
||||
|
||||
#include <QWidget>
|
||||
#include <QPushButton>
|
||||
#include <QLabel>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QGridLayout>
|
||||
#include <QPainter>
|
||||
#include <QMouseEvent>
|
||||
#include <QPropertyAnimation>
|
||||
#include <QGraphicsDropShadowEffect>
|
||||
#include <QLineEdit>
|
||||
#include <QSlider>
|
||||
#include <QCheckBox>
|
||||
|
||||
#include "FluentWidget.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
// Set font
|
||||
QFont font;
|
||||
font.setFamily("Segoe UI");
|
||||
font.setPointSize(9);
|
||||
app.setFont(font);
|
||||
|
||||
FluentWidget window;
|
||||
window.setWindowTitle("Fluent Design Demo");
|
||||
window.resize(1000, 800);
|
||||
window.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
9
doc/claude_fluent_light/mainwindow.cpp
Normal file
9
doc/claude_fluent_light/mainwindow.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "mainwindow.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
{
|
||||
setupUi(this);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {}
|
||||
16
doc/claude_fluent_light/mainwindow.h
Normal file
16
doc/claude_fluent_light/mainwindow.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
class MainWindow : public QMainWindow, private Ui::MainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
||||
31
doc/claude_fluent_light/mainwindow.ui
Normal file
31
doc/claude_fluent_light/mainwindow.ui
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget"/>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
224
doc/gem_fluend_dark/.qtcreator/gem_fluend_dark.pro.user
Normal file
224
doc/gem_fluend_dark/.qtcreator/gem_fluend_dark.pro.user
Normal file
@@ -0,0 +1,224 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 18.0.1, 2025-12-30T23:32:00. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{350f6538-4791-42f9-b43d-6ea1a7b22b7b}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="qlonglong">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoDetect">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.LineEndingBehavior">1</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
|
||||
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||
</valuemap>
|
||||
<value type="bool" key="AutoTest.ApplyFilter">false</value>
|
||||
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
|
||||
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||
<valuemap type="QVariantMap" key="ClangTools">
|
||||
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||
<value type="int" key="ClangTools.ParallelJobs">16</value>
|
||||
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="RcSync">0</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="DeviceType">Desktop</value>
|
||||
<value type="bool" key="HasPerBcDcs">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6101.win64_mingw_kit</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\syncMePlease\projects.now\gem_fluend_dark\build\Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/syncMePlease/projects.now/gem_fluend_dark/build/Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/gem_fluend_dark/gem_fluend_dark.pro</value>
|
||||
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/gem_fluend_dark/gem_fluend_dark.pro</value>
|
||||
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="qlonglong">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
24
doc/gem_fluend_dark/gem_fluend_dark.pro
Normal file
24
doc/gem_fluend_dark/gem_fluend_dark.pro
Normal file
@@ -0,0 +1,24 @@
|
||||
QT += core gui
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
CONFIG += c++17
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
mainwindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainwindow.h
|
||||
|
||||
FORMS += \
|
||||
mainwindow.ui
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
219
doc/gem_fluend_dark/main.cpp
Normal file
219
doc/gem_fluend_dark/main.cpp
Normal file
@@ -0,0 +1,219 @@
|
||||
#include <QApplication>
|
||||
#include <QWidget>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QLineEdit>
|
||||
#include <QProgressBar>
|
||||
#include <QPalette>
|
||||
#include <QFontDatabase>
|
||||
|
||||
// Hilfsfunktion: Setzt die Fluent Dark Palette global
|
||||
void applyFluentDarkTheme(QApplication &app) {
|
||||
// 1. Schriftart setzen (Segoe UI ist Standard für Fluent, Fallback auf Sans)
|
||||
QFont font = app.font();
|
||||
font.setFamily("Segoe UI Variable Display"); // Windows 11 Font
|
||||
if (!QFontDatabase().families().contains("Segoe UI Variable Display")) {
|
||||
font.setFamily("Segoe UI"); // Windows 10
|
||||
}
|
||||
font.setPointSize(10);
|
||||
app.setFont(font);
|
||||
|
||||
// 2. Die Palette definieren
|
||||
QPalette p;
|
||||
// Window / Background: #202020 (Mica Alt Base)
|
||||
QColor colBackground("#202020");
|
||||
// Surface / Container: #2D2D2D (Control Fill Secondary)
|
||||
QColor colSurface("#2D2D2D");
|
||||
// Accent: #60CDFF (System Accent Light 2)
|
||||
QColor colAccent("#60CDFF");
|
||||
// Text: White
|
||||
QColor colText(Qt::white);
|
||||
QColor colSubText("#D0D0D0");
|
||||
|
||||
p.setColor(QPalette::Window, colBackground);
|
||||
p.setColor(QPalette::WindowText, colText);
|
||||
p.setColor(QPalette::Base, colSurface);
|
||||
p.setColor(QPalette::AlternateBase, colBackground);
|
||||
p.setColor(QPalette::ToolTipBase, colSurface);
|
||||
p.setColor(QPalette::ToolTipText, colText);
|
||||
p.setColor(QPalette::Text, colText);
|
||||
p.setColor(QPalette::Button, colSurface);
|
||||
p.setColor(QPalette::ButtonText, colText);
|
||||
p.setColor(QPalette::PlaceholderText, colSubText);
|
||||
p.setColor(QPalette::Highlight, colAccent);
|
||||
p.setColor(QPalette::HighlightedText, Qt::black); // Kontrast auf Accent
|
||||
|
||||
app.setPalette(p);
|
||||
|
||||
// 3. Stylesheets für die Details (Runde Ecken, Hover)
|
||||
// Fluent Design nutzt Radius 4px für Controls und 8px für Layer
|
||||
app.setStyleSheet(R"(
|
||||
QWidget {
|
||||
background-color: #202020;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* CARD / CONTAINER STYLE */
|
||||
QFrame#Card {
|
||||
background-color: #2D2D2D;
|
||||
border: 1px solid #3A3A3A;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
/* BUTTONS */
|
||||
QPushButton {
|
||||
background-color: #2D2D2D;
|
||||
border: 1px solid #3A3A3A;
|
||||
border-radius: 4px;
|
||||
padding: 6px 12px;
|
||||
border-bottom: 1px solid #505050; /* Leichter 3D Effekt */
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #3A3A3A; /* Hover Layer */
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #1F1F1F;
|
||||
color: #D0D0D0;
|
||||
}
|
||||
/* Accent Button (Primary) */
|
||||
QPushButton#PrimaryButton {
|
||||
background-color: #60CDFF;
|
||||
color: #000000;
|
||||
border: 1px solid #60CDFF;
|
||||
}
|
||||
QPushButton#PrimaryButton:hover {
|
||||
background-color: #70D5FF;
|
||||
}
|
||||
QPushButton#PrimaryButton:pressed {
|
||||
background-color: #50B0DD;
|
||||
}
|
||||
|
||||
/* INPUT FIELDS */
|
||||
QLineEdit {
|
||||
background-color: #2D2D2D;
|
||||
border: 1px solid #3A3A3A;
|
||||
border-radius: 4px;
|
||||
padding: 5px;
|
||||
border-bottom: 2px solid #505050; /* Focus indicator line hint */
|
||||
selection-background-color: #60CDFF;
|
||||
selection-color: #000000;
|
||||
}
|
||||
QLineEdit:focus {
|
||||
background-color: #1F1F1F;
|
||||
border-bottom: 2px solid #60CDFF; /* Active highlight */
|
||||
}
|
||||
|
||||
/* LABELS */
|
||||
QLabel#Title {
|
||||
font-size: 18pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
QLabel#Subtitle {
|
||||
font-size: 10pt;
|
||||
color: #A0A0A0;
|
||||
}
|
||||
|
||||
/* PROGRESS BAR */
|
||||
QProgressBar {
|
||||
border: none;
|
||||
background-color: #3A3A3A;
|
||||
border-radius: 2px;
|
||||
height: 4px;
|
||||
text-align: center;
|
||||
}
|
||||
QProgressBar::chunk {
|
||||
background-color: #60CDFF;
|
||||
border-radius: 2px;
|
||||
}
|
||||
)");
|
||||
}
|
||||
|
||||
// Eine "Card" Komponente (wiederverwendbar)
|
||||
class FluentCard : public QFrame {
|
||||
public:
|
||||
FluentCard(const QString &title, const QString &value) {
|
||||
setObjectName("Card"); // Für Stylesheet
|
||||
QVBoxLayout *layout = new QVBoxLayout(this);
|
||||
|
||||
QLabel *lblTitle = new QLabel(title);
|
||||
lblTitle->setObjectName("Subtitle");
|
||||
|
||||
QLabel *lblValue = new QLabel(value);
|
||||
lblValue->setStyleSheet("font-size: 24pt; font-weight: 300;");
|
||||
|
||||
layout->addWidget(lblTitle);
|
||||
layout->addWidget(lblValue);
|
||||
layout->addStretch();
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
// Theme anwenden
|
||||
applyFluentDarkTheme(app);
|
||||
|
||||
// Hauptfenster
|
||||
QWidget window;
|
||||
window.setWindowTitle("Fluent Dark Mode Demo");
|
||||
window.resize(800, 500);
|
||||
|
||||
// Layouts
|
||||
QVBoxLayout *mainLayout = new QVBoxLayout(&window);
|
||||
mainLayout->setContentsMargins(24, 24, 24, 24);
|
||||
mainLayout->setSpacing(20);
|
||||
|
||||
// Header
|
||||
QLabel *header = new QLabel("Dashboard");
|
||||
header->setObjectName("Title");
|
||||
mainLayout->addWidget(header);
|
||||
|
||||
// Content Area (Grid aus Cards)
|
||||
QHBoxLayout *cardsLayout = new QHBoxLayout();
|
||||
cardsLayout->setSpacing(12);
|
||||
|
||||
cardsLayout->addWidget(new FluentCard("CPU Temp", "42.5 °C"));
|
||||
cardsLayout->addWidget(new FluentCard("Memory", "1.2 GB"));
|
||||
cardsLayout->addWidget(new FluentCard("Network", "12 Mb/s"));
|
||||
|
||||
mainLayout->addLayout(cardsLayout);
|
||||
|
||||
// Controls Area (Card für Settings)
|
||||
QFrame *controlsCard = new QFrame();
|
||||
controlsCard->setObjectName("Card");
|
||||
QVBoxLayout *controlsLayout = new QVBoxLayout(controlsCard);
|
||||
|
||||
QLabel *lblSettings = new QLabel("System Settings");
|
||||
lblSettings->setStyleSheet("font-size: 14pt; font-weight: bold; margin-bottom: 10px;");
|
||||
controlsLayout->addWidget(lblSettings);
|
||||
|
||||
// Input Row
|
||||
QHBoxLayout *inputRow = new QHBoxLayout();
|
||||
QLineEdit *edit = new QLineEdit();
|
||||
edit->setPlaceholderText("Enter Device Name...");
|
||||
QPushButton *btnApply = new QPushButton("Apply");
|
||||
btnApply->setObjectName("PrimaryButton"); // Accent Color!
|
||||
|
||||
inputRow->addWidget(edit);
|
||||
inputRow->addWidget(btnApply);
|
||||
controlsLayout->addLayout(inputRow);
|
||||
|
||||
// Progress Bar
|
||||
controlsLayout->addSpacing(10);
|
||||
QLabel *lblProgress = new QLabel("Processing...");
|
||||
lblProgress->setObjectName("Subtitle");
|
||||
controlsLayout->addWidget(lblProgress);
|
||||
|
||||
QProgressBar *progress = new QProgressBar();
|
||||
progress->setValue(75);
|
||||
progress->setTextVisible(false); // Fluent Bars haben meist keinen Text
|
||||
controlsLayout->addWidget(progress);
|
||||
|
||||
mainLayout->addWidget(controlsCard);
|
||||
mainLayout->addStretch(); // Schiebt alles nach oben
|
||||
|
||||
window.show();
|
||||
return app.exec();
|
||||
}
|
||||
9
doc/gem_fluend_dark/mainwindow.cpp
Normal file
9
doc/gem_fluend_dark/mainwindow.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "mainwindow.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
{
|
||||
setupUi(this);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {}
|
||||
16
doc/gem_fluend_dark/mainwindow.h
Normal file
16
doc/gem_fluend_dark/mainwindow.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
class MainWindow : public QMainWindow, private Ui::MainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
||||
31
doc/gem_fluend_dark/mainwindow.ui
Normal file
31
doc/gem_fluend_dark/mainwindow.ui
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget"/>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
224
doc/gemini_fluent_light/.qtcreator/gemini_fluent_light.pro.user
Normal file
224
doc/gemini_fluent_light/.qtcreator/gemini_fluent_light.pro.user
Normal file
@@ -0,0 +1,224 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 18.0.1, 2025-12-30T23:32:00. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{350f6538-4791-42f9-b43d-6ea1a7b22b7b}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
<value type="qlonglong">0</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="bool" key="EditorConfiguration.AutoDetect">true</value>
|
||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||
<value type="QString" key="language">Cpp</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||
<value type="QString" key="language">QmlJS</value>
|
||||
<valuemap type="QVariantMap" key="value">
|
||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
||||
</valuemap>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||
<value type="int" key="EditorConfiguration.LineEndingBehavior">1</value>
|
||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||
<value type="int" key="EditorConfiguration.PreferAfterWhitespaceComments">0</value>
|
||||
<value type="bool" key="EditorConfiguration.PreferSingleLineComments">false</value>
|
||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">2</value>
|
||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||
<value type="bool" key="EditorConfiguration.UseIndenter">false</value>
|
||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||
<value type="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
|
||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||
<value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
|
||||
<value type="bool" key="EditorConfiguration.tintMarginArea">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
|
||||
<value type="bool" key="AutoTest.Framework.Boost">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.CTest">false</value>
|
||||
<value type="bool" key="AutoTest.Framework.Catch">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.GTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
|
||||
<value type="bool" key="AutoTest.Framework.QtTest">true</value>
|
||||
</valuemap>
|
||||
<value type="bool" key="AutoTest.ApplyFilter">false</value>
|
||||
<valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
|
||||
<valuelist type="QVariantList" key="AutoTest.PathFilters"/>
|
||||
<value type="int" key="AutoTest.RunAfterBuild">0</value>
|
||||
<value type="bool" key="AutoTest.UseGlobal">true</value>
|
||||
<valuemap type="QVariantMap" key="ClangTools">
|
||||
<value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
|
||||
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
||||
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
||||
<value type="int" key="ClangTools.ParallelJobs">16</value>
|
||||
<value type="bool" key="ClangTools.PreferConfigFile">true</value>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
||||
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
||||
</valuemap>
|
||||
<value type="int" key="RcSync">0</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="DeviceType">Desktop</value>
|
||||
<value type="bool" key="HasPerBcDcs">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.10.1 MinGW 64-bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.6101.win64_mingw_kit</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||
<value type="int" key="EnableQmlDebugging">0</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\syncMePlease\projects.now\gemini_fluent_light\build\Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/syncMePlease/projects.now/gemini_fluent_light/build/Desktop_Qt_6_10_1_MinGW_64_bit-Debug</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
|
||||
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
|
||||
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/gemini_fluent_light/gemini_fluent_light.pro</value>
|
||||
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
|
||||
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
||||
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
|
||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
||||
<valuelist type="QVariantList" key="CustomOutputParsers"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
|
||||
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph "dwarf,4096" -F 250</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/syncMePlease/projects.now/gemini_fluent_light/gemini_fluent_light.pro</value>
|
||||
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
|
||||
<value type="QString" key="ProjectExplorer.RunConfiguration.UniqueId"></value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">%{RunConfig:Executable:Path}</value>
|
||||
</valuemap>
|
||||
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="qlonglong">1</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">22</value>
|
||||
</data>
|
||||
</qtcreator>
|
||||
24
doc/gemini_fluent_light/gemini_fluent_light.pro
Normal file
24
doc/gemini_fluent_light/gemini_fluent_light.pro
Normal file
@@ -0,0 +1,24 @@
|
||||
QT += core gui
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
CONFIG += c++17
|
||||
|
||||
# You can make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
mainwindow.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainwindow.h
|
||||
|
||||
FORMS += \
|
||||
mainwindow.ui
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
228
doc/gemini_fluent_light/main.cpp
Normal file
228
doc/gemini_fluent_light/main.cpp
Normal file
@@ -0,0 +1,228 @@
|
||||
#include <QApplication>
|
||||
#include <QWidget>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QLineEdit>
|
||||
#include <QProgressBar>
|
||||
#include <QPalette>
|
||||
#include <QFontDatabase>
|
||||
|
||||
// Hilfsfunktion: Setzt die Fluent LIGHT Palette global
|
||||
void applyFluentLightTheme(QApplication &app) {
|
||||
// 1. Schriftart setzen
|
||||
QFont font = app.font();
|
||||
font.setFamily("Segoe UI Variable Display");
|
||||
if (!QFontDatabase().families().contains("Segoe UI Variable Display")) {
|
||||
font.setFamily("Segoe UI");
|
||||
}
|
||||
font.setPointSize(10);
|
||||
app.setFont(font);
|
||||
|
||||
// 2. Die Palette definieren (Light Mode)
|
||||
QPalette p;
|
||||
// Window / Background: #F3F3F3 (Mica Alt)
|
||||
QColor colBackground("#F3F3F3");
|
||||
// Surface / Container: #FFFFFF (Solid White)
|
||||
QColor colSurface("#FFFFFF");
|
||||
// Accent: #0078D4 (System Accent Default)
|
||||
QColor colAccent("#0078D4");
|
||||
// Text: Black / Dark Gray
|
||||
QColor colText("#1A1A1A"); // Fast Schwarz für weicheren Kontrast
|
||||
QColor colSubText("#5D5D5D");
|
||||
|
||||
p.setColor(QPalette::Window, colBackground);
|
||||
p.setColor(QPalette::WindowText, colText);
|
||||
p.setColor(QPalette::Base, colSurface);
|
||||
p.setColor(QPalette::AlternateBase, colBackground);
|
||||
p.setColor(QPalette::ToolTipBase, colSurface);
|
||||
p.setColor(QPalette::ToolTipText, colText);
|
||||
p.setColor(QPalette::Text, colText);
|
||||
p.setColor(QPalette::Button, colSurface);
|
||||
p.setColor(QPalette::ButtonText, colText);
|
||||
p.setColor(QPalette::PlaceholderText, colSubText);
|
||||
p.setColor(QPalette::Highlight, colAccent);
|
||||
p.setColor(QPalette::HighlightedText, Qt::white); // Weißer Text auf Blau
|
||||
|
||||
app.setPalette(p);
|
||||
|
||||
// 3. Stylesheets für die Details
|
||||
app.setStyleSheet(R"(
|
||||
QWidget {
|
||||
background-color: #F3F3F3;
|
||||
color: #1A1A1A;
|
||||
}
|
||||
|
||||
/* CARD / CONTAINER STYLE */
|
||||
QFrame#Card {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E5E5E5; /* Subtiler Rand zur Abgrenzung */
|
||||
border-radius: 8px;
|
||||
/* Optional: Qt unterstützt simple Schatten, aber auf Pi teuer.
|
||||
Der Border reicht hier. */
|
||||
}
|
||||
|
||||
/* BUTTONS */
|
||||
QPushButton {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #D1D1D1;
|
||||
border-bottom: 1px solid #B0B0B0; /* Tiefe simulieren */
|
||||
border-radius: 4px;
|
||||
padding: 6px 12px;
|
||||
color: #1A1A1A;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #FBFBFB;
|
||||
border: 1px solid #C0C0C0;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #F0F0F0;
|
||||
color: #5D5D5D;
|
||||
border-bottom: 1px solid #D1D1D1; /* Flach drücken */
|
||||
}
|
||||
|
||||
/* Accent Button (Primary) */
|
||||
QPushButton#PrimaryButton {
|
||||
background-color: #0078D4;
|
||||
color: #FFFFFF;
|
||||
border: 1px solid #0078D4;
|
||||
}
|
||||
QPushButton#PrimaryButton:hover {
|
||||
background-color: #1084D9;
|
||||
}
|
||||
QPushButton#PrimaryButton:pressed {
|
||||
background-color: #006CC1;
|
||||
border-color: #006CC1;
|
||||
}
|
||||
|
||||
/* INPUT FIELDS */
|
||||
QLineEdit {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #D1D1D1;
|
||||
border-bottom: 2px solid #8A8A8A; /* Stärkerer Indikator */
|
||||
border-radius: 4px;
|
||||
padding: 5px;
|
||||
selection-background-color: #0078D4;
|
||||
selection-color: #FFFFFF;
|
||||
}
|
||||
QLineEdit:hover {
|
||||
background-color: #FDFDFD;
|
||||
}
|
||||
QLineEdit:focus {
|
||||
background-color: #FFFFFF;
|
||||
border-bottom: 2px solid #0078D4; /* Active highlight */
|
||||
}
|
||||
|
||||
/* LABELS */
|
||||
QLabel#Title {
|
||||
font-size: 18pt;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
QLabel#Subtitle {
|
||||
font-size: 10pt;
|
||||
color: #5D5D5D;
|
||||
}
|
||||
|
||||
/* PROGRESS BAR */
|
||||
QProgressBar {
|
||||
border: none;
|
||||
background-color: #E0E0E0; /* Track Color */
|
||||
border-radius: 2px;
|
||||
height: 4px;
|
||||
text-align: center;
|
||||
}
|
||||
QProgressBar::chunk {
|
||||
background-color: #0078D4; /* Accent Color */
|
||||
border-radius: 2px;
|
||||
}
|
||||
)");
|
||||
}
|
||||
|
||||
// Eine "Card" Komponente (Identisch zum Dark Mode)
|
||||
class FluentCard : public QFrame {
|
||||
public:
|
||||
FluentCard(const QString &title, const QString &value) {
|
||||
setObjectName("Card");
|
||||
QVBoxLayout *layout = new QVBoxLayout(this);
|
||||
|
||||
QLabel *lblTitle = new QLabel(title);
|
||||
lblTitle->setObjectName("Subtitle");
|
||||
|
||||
QLabel *lblValue = new QLabel(value);
|
||||
lblValue->setStyleSheet("font-size: 24pt; font-weight: 300; background: transparent;");
|
||||
// Wichtig: background transparent erzwingen, sonst erben Labels manchmal falsche Farbe
|
||||
|
||||
layout->addWidget(lblTitle);
|
||||
layout->addWidget(lblValue);
|
||||
layout->addStretch();
|
||||
}
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
// HIER: Light Theme anwenden
|
||||
applyFluentLightTheme(app);
|
||||
|
||||
QWidget window;
|
||||
window.setWindowTitle("Fluent Light Mode Demo");
|
||||
window.resize(800, 500);
|
||||
|
||||
QVBoxLayout *mainLayout = new QVBoxLayout(&window);
|
||||
mainLayout->setContentsMargins(24, 24, 24, 24);
|
||||
mainLayout->setSpacing(20);
|
||||
|
||||
// Header
|
||||
QLabel *header = new QLabel("Dashboard");
|
||||
header->setObjectName("Title");
|
||||
mainLayout->addWidget(header);
|
||||
|
||||
// Content Area
|
||||
QHBoxLayout *cardsLayout = new QHBoxLayout();
|
||||
cardsLayout->setSpacing(12);
|
||||
|
||||
cardsLayout->addWidget(new FluentCard("CPU Temp", "42.5 °C"));
|
||||
cardsLayout->addWidget(new FluentCard("Memory", "1.2 GB"));
|
||||
cardsLayout->addWidget(new FluentCard("Network", "12 Mb/s"));
|
||||
|
||||
mainLayout->addLayout(cardsLayout);
|
||||
|
||||
// Controls Area
|
||||
QFrame *controlsCard = new QFrame();
|
||||
controlsCard->setObjectName("Card");
|
||||
QVBoxLayout *controlsLayout = new QVBoxLayout(controlsCard);
|
||||
|
||||
QLabel *lblSettings = new QLabel("System Settings");
|
||||
lblSettings->setStyleSheet("font-size: 14pt; font-weight: bold; margin-bottom: 10px; background: transparent;");
|
||||
controlsLayout->addWidget(lblSettings);
|
||||
|
||||
// Input Row
|
||||
QHBoxLayout *inputRow = new QHBoxLayout();
|
||||
QLineEdit *edit = new QLineEdit();
|
||||
edit->setPlaceholderText("Enter Device Name...");
|
||||
QPushButton *btnApply = new QPushButton("Apply");
|
||||
btnApply->setObjectName("PrimaryButton");
|
||||
|
||||
inputRow->addWidget(edit);
|
||||
inputRow->addWidget(btnApply);
|
||||
controlsLayout->addLayout(inputRow);
|
||||
|
||||
// Progress Bar
|
||||
controlsLayout->addSpacing(10);
|
||||
QLabel *lblProgress = new QLabel("Processing...");
|
||||
lblProgress->setObjectName("Subtitle");
|
||||
controlsLayout->addWidget(lblProgress);
|
||||
|
||||
QProgressBar *progress = new QProgressBar();
|
||||
progress->setValue(75);
|
||||
progress->setTextVisible(false);
|
||||
controlsLayout->addWidget(progress);
|
||||
|
||||
mainLayout->addWidget(controlsCard);
|
||||
mainLayout->addStretch();
|
||||
|
||||
window.show();
|
||||
return app.exec();
|
||||
}
|
||||
9
doc/gemini_fluent_light/mainwindow.cpp
Normal file
9
doc/gemini_fluent_light/mainwindow.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include "mainwindow.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
{
|
||||
setupUi(this);
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow() {}
|
||||
16
doc/gemini_fluent_light/mainwindow.h
Normal file
16
doc/gemini_fluent_light/mainwindow.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
|
||||
class MainWindow : public QMainWindow, private Ui::MainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
};
|
||||
#endif // MAINWINDOW_H
|
||||
31
doc/gemini_fluent_light/mainwindow.ui
Normal file
31
doc/gemini_fluent_light/mainwindow.ui
Normal file
@@ -0,0 +1,31 @@
|
||||
<?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>800</width>
|
||||
<height>600</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>MainWindow</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralwidget"/>
|
||||
<widget class="QMenuBar" name="menubar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
23
main.cpp
23
main.cpp
@@ -52,8 +52,29 @@ bool setApplicationStyleSheet( QAnyStringView path )
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
|
||||
QApplication app(argc, argv);
|
||||
//setApplicationStyleSheet( ":/bionxcontrol.qss"_L1 );
|
||||
setApplicationStyleSheet( ":/claude_dark_mode.qss"_L1 );
|
||||
/*
|
||||
app.setStyleSheet(R"(
|
||||
QWidget {
|
||||
background-color: #F3F3F3;
|
||||
font-family: 'Segoe UI Variable', 'Segoe UI', sans-serif;
|
||||
}
|
||||
)");
|
||||
*/
|
||||
/*
|
||||
app.setStyleSheet(R"(
|
||||
* {
|
||||
font-family: 'Calibri', 'Carlito', 'Arial', sans-serif;
|
||||
font-size: 12pt;
|
||||
})");
|
||||
|
||||
*/
|
||||
//QFont font("segoe UI", 12); // Name, Größe
|
||||
//QFont font("calibri", 12); // Name, Größe
|
||||
//app.setFont(font);
|
||||
|
||||
BCMainWindow w;
|
||||
w.show();
|
||||
|
||||
890
resources/claude_light_mode.qss
Normal file
890
resources/claude_light_mode.qss
Normal file
@@ -0,0 +1,890 @@
|
||||
/* ===================================================================
|
||||
Fluent Design Light Mode Stylesheet for Qt6
|
||||
Windows 11 inspired light theme
|
||||
=================================================================== */
|
||||
|
||||
/* === Color Palette ===
|
||||
Background: #F3F3F3
|
||||
Surface: #FFFFFF
|
||||
Surface Hover: #F9F9F9
|
||||
Border: #E1DFDD
|
||||
Text: #000000
|
||||
Text Secondary: #605E5C
|
||||
Accent: #0078D4
|
||||
Accent Hover: #106EBE
|
||||
=== */
|
||||
|
||||
/* === Global Styles === */
|
||||
* {
|
||||
font-family: "Segoe UI", "Noto Sans", Roboto, sans-serif;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
QWidget {
|
||||
background-color: #F3F3F3;
|
||||
color: #000000;
|
||||
selection-background-color: #0078D4;
|
||||
selection-color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* === QMainWindow === */
|
||||
QMainWindow {
|
||||
background-color: #F3F3F3;
|
||||
}
|
||||
|
||||
QMainWindow::separator {
|
||||
background-color: #E1DFDD;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
QMainWindow::separator:hover {
|
||||
background-color: #0078D4;
|
||||
}
|
||||
|
||||
/* === QPushButton === */
|
||||
QPushButton {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
padding: 6px 16px;
|
||||
min-height: 20px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
QPushButton:hover {
|
||||
background-color: #F9F9F9;
|
||||
border-color: #D1CFCD;
|
||||
}
|
||||
|
||||
QPushButton:pressed {
|
||||
background-color: #F0F0F0;
|
||||
border-color: #E1DFDD;
|
||||
}
|
||||
|
||||
QPushButton:disabled {
|
||||
background-color: #F9F9F9;
|
||||
color: #A19F9D;
|
||||
border-color: #E1DFDD;
|
||||
}
|
||||
|
||||
QPushButton:default {
|
||||
background-color: #0078D4;
|
||||
border-color: #0078D4;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
QPushButton:default:hover {
|
||||
background-color: #106EBE;
|
||||
border-color: #106EBE;
|
||||
}
|
||||
|
||||
QPushButton:default:pressed {
|
||||
background-color: #005A9E;
|
||||
border-color: #005A9E;
|
||||
}
|
||||
|
||||
/* === QLineEdit === */
|
||||
QLineEdit {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
padding: 6px 8px;
|
||||
selection-background-color: #0078D4;
|
||||
}
|
||||
|
||||
QLineEdit:hover {
|
||||
border-color: #D1CFCD;
|
||||
}
|
||||
|
||||
QLineEdit:focus {
|
||||
background-color: #FFFFFF;
|
||||
border: 2px solid #0078D4;
|
||||
padding: 5px 7px;
|
||||
}
|
||||
|
||||
QLineEdit:disabled {
|
||||
background-color: #F9F9F9;
|
||||
color: #A19F9D;
|
||||
border-color: #E1DFDD;
|
||||
}
|
||||
|
||||
QLineEdit[readOnly="true"] {
|
||||
background-color: #F9F9F9;
|
||||
color: #605E5C;
|
||||
}
|
||||
|
||||
/* === QTextEdit & QPlainTextEdit === */
|
||||
QTextEdit, QPlainTextEdit {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
padding: 8px;
|
||||
selection-background-color: #0078D4;
|
||||
}
|
||||
|
||||
QTextEdit:hover, QPlainTextEdit:hover {
|
||||
border-color: #D1CFCD;
|
||||
}
|
||||
|
||||
QTextEdit:focus, QPlainTextEdit:focus {
|
||||
border: 2px solid #0078D4;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
QTextEdit:disabled, QPlainTextEdit:disabled {
|
||||
background-color: #F9F9F9;
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
/* === QComboBox === */
|
||||
QComboBox {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
padding: 6px 8px;
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
QComboBox:hover {
|
||||
background-color: #F9F9F9;
|
||||
border-color: #D1CFCD;
|
||||
}
|
||||
|
||||
QComboBox:focus {
|
||||
border: 2px solid #0078D4;
|
||||
}
|
||||
|
||||
QComboBox:disabled {
|
||||
background-color: #F9F9F9;
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
QComboBox::drop-down {
|
||||
border: none;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
QComboBox::down-arrow {
|
||||
image: url(:/icons/down-arrow-light.png);
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
selection-background-color: #0078D4;
|
||||
selection-color: #FFFFFF;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView::item {
|
||||
min-height: 28px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
QComboBox QAbstractItemView::item:hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
/* === QSpinBox & QDoubleSpinBox === */
|
||||
QSpinBox, QDoubleSpinBox {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
padding: 6px 8px;
|
||||
min-height: 20px;
|
||||
}
|
||||
|
||||
QSpinBox:hover, QDoubleSpinBox:hover {
|
||||
border-color: #D1CFCD;
|
||||
}
|
||||
|
||||
QSpinBox:focus, QDoubleSpinBox:focus {
|
||||
border: 2px solid #0078D4;
|
||||
}
|
||||
|
||||
QSpinBox:disabled, QDoubleSpinBox:disabled {
|
||||
background-color: #F9F9F9;
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
QSpinBox::up-button, QDoubleSpinBox::up-button {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
QSpinBox::up-button:hover, QDoubleSpinBox::up-button:hover {
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
QSpinBox::down-button, QDoubleSpinBox::down-button {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
width: 16px;
|
||||
}
|
||||
|
||||
QSpinBox::down-button:hover, QDoubleSpinBox::down-button:hover {
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
/* === QCheckBox === */
|
||||
QCheckBox {
|
||||
spacing: 8px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
QCheckBox::indicator {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #8A8886;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
QCheckBox::indicator:hover {
|
||||
background-color: #F9F9F9;
|
||||
border-color: #605E5C;
|
||||
}
|
||||
|
||||
QCheckBox::indicator:checked {
|
||||
background-color: #0078D4;
|
||||
border-color: #0078D4;
|
||||
image: url(:/icons/checkmark-white.png);
|
||||
}
|
||||
|
||||
QCheckBox::indicator:checked:hover {
|
||||
background-color: #106EBE;
|
||||
border-color: #106EBE;
|
||||
}
|
||||
|
||||
QCheckBox::indicator:disabled {
|
||||
background-color: #F9F9F9;
|
||||
border-color: #E1DFDD;
|
||||
}
|
||||
|
||||
QCheckBox:disabled {
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
/* === QRadioButton === */
|
||||
QRadioButton {
|
||||
spacing: 8px;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
QRadioButton::indicator {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 9px;
|
||||
border: 1px solid #8A8886;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
QRadioButton::indicator:hover {
|
||||
background-color: #F9F9F9;
|
||||
border-color: #605E5C;
|
||||
}
|
||||
|
||||
QRadioButton::indicator:checked {
|
||||
background-color: #0078D4;
|
||||
border-color: #0078D4;
|
||||
}
|
||||
|
||||
QRadioButton::indicator:checked:hover {
|
||||
background-color: #106EBE;
|
||||
border-color: #106EBE;
|
||||
}
|
||||
|
||||
QRadioButton::indicator:checked::after {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 4px;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
QRadioButton::indicator:disabled {
|
||||
background-color: #F9F9F9;
|
||||
border-color: #E1DFDD;
|
||||
}
|
||||
|
||||
QRadioButton:disabled {
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
/* === QSlider === */
|
||||
QSlider::groove:horizontal {
|
||||
height: 4px;
|
||||
background-color: #E1DFDD;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal {
|
||||
background-color: #FFFFFF;
|
||||
border: 2px solid #0078D4;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: -7px 0;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:hover {
|
||||
background-color: #FFFFFF;
|
||||
border: 2px solid #106EBE;
|
||||
}
|
||||
|
||||
QSlider::handle:horizontal:pressed {
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
QSlider::sub-page:horizontal {
|
||||
background-color: #0078D4;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QSlider::groove:vertical {
|
||||
width: 4px;
|
||||
background-color: #E1DFDD;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QSlider::handle:vertical {
|
||||
background-color: #FFFFFF;
|
||||
border: 2px solid #0078D4;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 0 -7px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
QSlider::sub-page:vertical {
|
||||
background-color: #0078D4;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
/* === QProgressBar === */
|
||||
QProgressBar {
|
||||
background-color: #E1DFDD;
|
||||
border: none;
|
||||
border-radius: 2px;
|
||||
height: 4px;
|
||||
text-align: center;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
QProgressBar::chunk {
|
||||
background-color: #0078D4;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QProgressBar:disabled {
|
||||
background-color: #E1DFDD;
|
||||
}
|
||||
|
||||
/* === QScrollBar === */
|
||||
QScrollBar:horizontal {
|
||||
background-color: transparent;
|
||||
height: 12px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal {
|
||||
background-color: #C8C6C4;
|
||||
min-width: 40px;
|
||||
border-radius: 6px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:hover {
|
||||
background-color: #A19F9D;
|
||||
}
|
||||
|
||||
QScrollBar::handle:horizontal:pressed {
|
||||
background-color: #8A8886;
|
||||
}
|
||||
|
||||
QScrollBar::add-line:horizontal,
|
||||
QScrollBar::sub-line:horizontal {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::add-page:horizontal,
|
||||
QScrollBar::sub-page:horizontal {
|
||||
background: none;
|
||||
}
|
||||
|
||||
QScrollBar:vertical {
|
||||
background-color: transparent;
|
||||
width: 12px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical {
|
||||
background-color: #C8C6C4;
|
||||
min-height: 40px;
|
||||
border-radius: 6px;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:hover {
|
||||
background-color: #A19F9D;
|
||||
}
|
||||
|
||||
QScrollBar::handle:vertical:pressed {
|
||||
background-color: #8A8886;
|
||||
}
|
||||
|
||||
QScrollBar::add-line:vertical,
|
||||
QScrollBar::sub-line:vertical {
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
QScrollBar::add-page:vertical,
|
||||
QScrollBar::sub-page:vertical {
|
||||
background: none;
|
||||
}
|
||||
|
||||
/* === QTabWidget === */
|
||||
QTabWidget::pane {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
QTabBar::tab {
|
||||
background-color: transparent;
|
||||
color: #605E5C;
|
||||
border: none;
|
||||
border-bottom: 2px solid transparent;
|
||||
padding: 8px 16px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
QTabBar::tab:hover {
|
||||
color: #000000;
|
||||
background-color: #F9F9F9;
|
||||
border-bottom: 2px solid #C8C6C4;
|
||||
}
|
||||
|
||||
QTabBar::tab:selected {
|
||||
color: #000000;
|
||||
background-color: #FFFFFF;
|
||||
border-bottom: 2px solid #0078D4;
|
||||
}
|
||||
|
||||
QTabBar::tab:disabled {
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
/* === QGroupBox === */
|
||||
QGroupBox {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 6px;
|
||||
margin-top: 12px;
|
||||
padding-top: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
QGroupBox::title {
|
||||
subcontrol-origin: margin;
|
||||
subcontrol-position: top left;
|
||||
padding: 0 8px;
|
||||
color: #000000;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* === QLabel === */
|
||||
QLabel {
|
||||
background-color: transparent;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
QLabel:disabled {
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
/* === QToolButton === */
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: #000000;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
QToolButton:hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
QToolButton:pressed {
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
QToolButton:checked {
|
||||
background-color: #0078D4;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
QToolButton:disabled {
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
/* === QMenu === */
|
||||
QMenu {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
QMenu::item {
|
||||
background-color: transparent;
|
||||
padding: 6px 24px 6px 8px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QMenu::item:selected {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
QMenu::item:disabled {
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
QMenu::separator {
|
||||
height: 1px;
|
||||
background-color: #E1DFDD;
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
QMenu::icon {
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
/* === QMenuBar === */
|
||||
QMenuBar {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border-bottom: 1px solid #E1DFDD;
|
||||
}
|
||||
|
||||
QMenuBar::item {
|
||||
background-color: transparent;
|
||||
padding: 6px 12px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QMenuBar::item:selected {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
QMenuBar::item:pressed {
|
||||
background-color: #F0F0F0;
|
||||
}
|
||||
|
||||
/* === QToolBar === */
|
||||
QToolBar {
|
||||
background-color: #FFFFFF;
|
||||
border: none;
|
||||
border-bottom: 1px solid #E1DFDD;
|
||||
spacing: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
QToolBar::handle {
|
||||
background-color: #E1DFDD;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
QToolBar::separator {
|
||||
background-color: #E1DFDD;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
/* === QStatusBar === */
|
||||
QStatusBar {
|
||||
background-color: #FFFFFF;
|
||||
color: #605E5C;
|
||||
border-top: 1px solid #E1DFDD;
|
||||
}
|
||||
|
||||
QStatusBar::item {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* === QDockWidget === */
|
||||
QDockWidget {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
titlebar-close-icon: url(:/icons/close-light.png);
|
||||
titlebar-normal-icon: url(:/icons/float-light.png);
|
||||
}
|
||||
|
||||
QDockWidget::title {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E1DFDD;
|
||||
padding: 6px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
QDockWidget::close-button,
|
||||
QDockWidget::float-button {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
QDockWidget::close-button:hover,
|
||||
QDockWidget::float-button:hover {
|
||||
background-color: #F9F9F9;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* === QListView & QListWidget === */
|
||||
QListView, QListWidget {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
QListView::item, QListWidget::item {
|
||||
padding: 6px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QListView::item:hover, QListWidget::item:hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
QListView::item:selected, QListWidget::item:selected {
|
||||
background-color: #0078D4;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
QListView::item:disabled, QListWidget::item:disabled {
|
||||
color: #A19F9D;
|
||||
}
|
||||
|
||||
/* === QTreeView & QTreeWidget === */
|
||||
QTreeView, QTreeWidget {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
outline: none;
|
||||
show-decoration-selected: 1;
|
||||
}
|
||||
|
||||
QTreeView::item, QTreeWidget::item {
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QTreeView::item:hover, QTreeWidget::item:hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
QTreeView::item:selected, QTreeWidget::item:selected {
|
||||
background-color: #0078D4;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
QTreeView::branch, QTreeWidget::branch {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
QTreeView::branch:closed:has-children, QTreeWidget::branch:closed:has-children {
|
||||
image: url(:/icons/branch-closed-light.png);
|
||||
}
|
||||
|
||||
QTreeView::branch:open:has-children, QTreeWidget::branch:open:has-children {
|
||||
image: url(:/icons/branch-open-light.png);
|
||||
}
|
||||
|
||||
/* === QTableView & QTableWidget === */
|
||||
QTableView, QTableWidget {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
gridline-color: #E1DFDD;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
selection-background-color: #0078D4;
|
||||
}
|
||||
|
||||
QTableView::item, QTableWidget::item {
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
QTableView::item:hover, QTableWidget::item:hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
QTableView::item:selected, QTableWidget::item:selected {
|
||||
background-color: #0078D4;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
QHeaderView::section {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
padding: 6px;
|
||||
border: none;
|
||||
border-right: 1px solid #E1DFDD;
|
||||
border-bottom: 1px solid #E1DFDD;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
QHeaderView::section:hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
/* === QDialog === */
|
||||
QDialog {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* === QMessageBox === */
|
||||
QMessageBox {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
QMessageBox QLabel {
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/* === QToolTip === */
|
||||
QToolTip {
|
||||
background-color: #F9F9F9;
|
||||
color: #000000;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 4px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
||||
/* === QCalendarWidget === */
|
||||
QCalendarWidget {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
QCalendarWidget QToolButton {
|
||||
color: #000000;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
QCalendarWidget QToolButton:hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
QCalendarWidget QMenu {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
QCalendarWidget QSpinBox {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
selection-background-color: #0078D4;
|
||||
}
|
||||
|
||||
QCalendarWidget QAbstractItemView {
|
||||
background-color: #FFFFFF;
|
||||
color: #000000;
|
||||
selection-background-color: #0078D4;
|
||||
selection-color: #FFFFFF;
|
||||
}
|
||||
|
||||
/* === QSplitter === */
|
||||
QSplitter::handle {
|
||||
background-color: #E1DFDD;
|
||||
}
|
||||
|
||||
QSplitter::handle:hover {
|
||||
background-color: #0078D4;
|
||||
}
|
||||
|
||||
QSplitter::handle:horizontal {
|
||||
width: 1px;
|
||||
}
|
||||
|
||||
QSplitter::handle:vertical {
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
/* === Custom Classes === */
|
||||
.accent-button {
|
||||
background-color: #0078D4;
|
||||
color: #FFFFFF;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.accent-button:hover {
|
||||
background-color: #106EBE;
|
||||
}
|
||||
|
||||
.accent-button:pressed {
|
||||
background-color: #005A9E;
|
||||
}
|
||||
|
||||
.danger-button {
|
||||
background-color: #C42B1C;
|
||||
color: #FFFFFF;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.danger-button:hover {
|
||||
background-color: #A52314;
|
||||
}
|
||||
|
||||
.success-button {
|
||||
background-color: #107C10;
|
||||
color: #FFFFFF;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.success-button:hover {
|
||||
background-color: #0E6B0E;
|
||||
}
|
||||
|
||||
.card {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E1DFDD;
|
||||
border-radius: 8px;
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.surface {
|
||||
background-color: #FFFFFF;
|
||||
border: 1px solid #E1DFDD;
|
||||
}
|
||||
|
||||
.divider {
|
||||
background-color: #E1DFDD;
|
||||
min-height: 1px;
|
||||
max-height: 1px;
|
||||
}
|
||||
|
||||
.secondary-text {
|
||||
color: #605E5C;
|
||||
}
|
||||
|
||||
.disabled-text {
|
||||
color: #A19F9D;
|
||||
}
|
||||
Reference in New Issue
Block a user