Fixed light & dark modes.

This commit is contained in:
2026-01-07 22:20:39 +01:00
parent 3bdc491830
commit 23695bc7ef
11 changed files with 243 additions and 423 deletions

View File

@@ -30,7 +30,7 @@
***************************************************************************/
#include <//qDebug>
#include <QDebug>
#include <bcdrivertinycan.h>
#include <can_drv.h>

View File

@@ -44,6 +44,7 @@ BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent )
// CSS: Transparent, damit es sich nahtlos in den StatusBar einfügt
// Schriftgröße etwas erhöhen, damit die Emojis gut erkennbar sind
/*
setStyleSheet(R"(
BCThemeSwitchButton
{
@@ -57,7 +58,7 @@ BCThemeSwitchButton::BCThemeSwitchButton(QWidget *parent )
border-radius: 24px;
}
)");
*/
// Initialer Status (Startet im Dark Mode -> zeigt Mond)
updateIcon();

View File

@@ -50,8 +50,12 @@ BCMainWindow::BCMainWindow(QWidget *parent)
qRegisterMetaType<BCValue>("BCValue");
qRegisterMetaType<QList<BCValue>>("BCValueList");
setupUi(this);
#if defined(Q_OS_LINUX)
// Für Touch screen: Window FRam weglassen
//setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
#endif
setupUi(this);
// Wir schreiben den 'initMainWindow()' Aufruf mit Hilfe des
// timers in die Event-Queue, damit er erst ausgeführt wird,
@@ -81,7 +85,6 @@ BCMainWindow::~BCMainWindow()
void BCMainWindow::initMainWindow()
{
// Lambda um die buttons mit ihren Actions zu verbinden
auto configureAction = [&]( QToolButton* button, QAction* action, BCDevice::ID deviceID )
{
@@ -89,9 +92,9 @@ void BCMainWindow::initMainWindow()
button->setDefaultAction( action);
// new way: die DeviceID muss aber explizit vom Lambda eingefanden werden.
connect( action, &QAction::triggered, this, [this,deviceID]()
{
onShowDevicePanel( deviceID );
});
{
onShowDevicePanel( deviceID );
});
if( _devicePanels.contains(deviceID) )
{
@@ -110,34 +113,11 @@ void BCMainWindow::initMainWindow()
_devicePanels[BCDevice::ID::Battery] = _batteryPanel;
_devicePanels[BCDevice::ID::Motor] = _motorPanel;
// Die actions an die Buttons binden
// Die actions an die Buttons binden
configureAction(_motorButton, _motorAction, BCDevice::ID::Motor );
configureAction(_consoleButton, _consoleAction, BCDevice::ID::Console );
configureAction(_batteryButton, _batteryAction, BCDevice::ID::Battery );
/*
bool m_isDarkMode = false;
QString icon = m_isDarkMode ? "☀️" : "🌙";
fitzeButton->setText(icon);
QString style = QString(
"QPushButton {"
" background-color: %1;"
" border: 1px solid %2;"
" border-radius: 6px;"
" font-size: 12pt;"
" padding: 0px;"
"}"
"QPushButton:hover {"
" background-color: %3;"
"}"
).arg(m_isDarkMode ? "#2B2B2B" : "#FFFFFF")
.arg(m_isDarkMode ? "#3F3F3F" : "#E1DFDD")
.arg(m_isDarkMode ? "#3A3A3A" : "#F9F9F9");
fitzeButton->setStyleSheet(style);
*/
initStatusBar();
_connectButton->setDefaultAction( _connectAction);
@@ -165,12 +145,12 @@ void BCMainWindow::initMainWindow()
//_batteryAction->trigger();
// Dummy sync beim starten
QTimer::singleShot(1000, this, [this]()
{
onSyncDeviceView();
});
}
}
/*
// 2. Bild für den Zustand UNCHECKED (Off) hinzufügen
@@ -265,8 +245,8 @@ void BCMainWindow::onShowMessage( const QString& message, int timeOut )
void BCMainWindow::autoConnect()
{
// __fix!
// if( !connect)
// fallBack
// if( !connect)
// fallBack
}
void BCMainWindow::onDriverStateChanged( BCDriver::DriverState state, const QString& message )

View File

@@ -165,14 +165,10 @@
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="bionxcontrol.qrc">
<normaloff>:/sync.png</normaloff>:/sync.png</iconset>
</property>
<property name="iconSize">
<size>
<width>48</width>
<height>48</height>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="autoRaise">
@@ -191,14 +187,10 @@
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="bionxcontrol.qrc">
<normaloff>:/connect.png</normaloff>:/connect.png</iconset>
</property>
<property name="iconSize">
<size>
<width>48</width>
<height>48</height>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="autoRaise">
@@ -223,8 +215,8 @@
</property>
<property name="iconSize">
<size>
<width>48</width>
<height>48</height>
<width>64</width>
<height>64</height>
</size>
</property>
<property name="autoRaise">

View File

@@ -31,7 +31,7 @@
#include <QThread>
#include <//qDebug>
#include <QDebug>
#include <QCoreApplication>
#include <bctransmitter.h>

View File

@@ -80,7 +80,7 @@ public:
enum class Flag : uint8_t
{
NoFlag = 0x00,
NoFlag = 0x00,
ReadMe = 0x01,
WriteMe = 0x02,
ReadOnly = 0x04,

View File

@@ -107,6 +107,7 @@ void BCXmlLoader::loadXmlBikeData( const QString& fileName )
}
}
/**
* @brief Lädt deie Daten des BionX eBikes
* @param deviceID
@@ -169,6 +170,11 @@ void BCXmlLoader::loadXmlBikeDeviceData(BCDevice::ID deviceID)
}
/**
* @brief Erzeugt einen BCValue für die DeviceID aus dem gegebenen parameter pack
*/
std::optional<BCValuePtr> BCXmlLoader::makeValue( BCDevice::ID deviceID, const BCValueParams& params )
{
@@ -191,13 +197,9 @@ std::optional<BCValuePtr> BCXmlLoader::makeValue( BCDevice::ID deviceID, const B
}
};
/*
Wir brauchen:
- einen gültige ID String um die enum ID herauszufinden.
- einen gültige UnitType String um den ValueType herauszufinden.
*/
// Wir brauchen:
// - einen gültige ID String um die enum ID herauszufinden.
// - einen gültige UnitType String um den ValueType herauszufinden.
// geht nicht auf qt6.8 von debian trixie
//std::optional<quint64> IDVal = s_bcValueEnum.keyToValue64( params.ID.toLatin1().constData() );

View File

@@ -1,20 +1,3 @@
/* appqss */
/* Alle QWidgets bekommen diesen Font */
QWidget
{
font-family: "Calibri", "Carlito", "Open Sans", sans-serif;
font-size: 10pt;
margin: 0px;
padding: 0px;
}
QLabel#_headerLabel
{
font-size: 14pt;
font-weight: bold;
}
/* ===== Fluent Dark Mode Theme ===== */
/* Basierend auf Microsoft Fluent Design System */
@@ -32,6 +15,12 @@ QWidget {
font-size: 14px;
}
QLabel#_headerLabel
{
font-size: 18pt;
/*font-weight: bold;*/
}
QWidget:disabled {
color: #6d6d6d;
}
@@ -128,55 +117,6 @@ QTableView::item:selected:!active {
background-color: rgba(0, 120, 212, 0.5);
}
/* === QHeaderView === */
QHeaderView {
background-color: #323232;
border: none;
}
QHeaderView::section {
background-color: #323232;
color: #e4e4e4;
padding: 8px 12px;
border: none;
border-right: 1px solid #3d3d3d;
border-bottom: 1px solid #3d3d3d;
font-weight: 600;
}
QHeaderView::section:horizontal {
border-top: none;
}
QHeaderView::section:vertical {
border-left: none;
}
QHeaderView::section:hover {
background-color: rgba(255, 255, 255, 0.06);
}
QHeaderView::section:pressed {
background-color: rgba(255, 255, 255, 0.03);
}
QHeaderView::section:checked {
background-color: rgba(0, 120, 212, 0.15);
color: #0078d4;
}
/* Sort indicator */
QHeaderView::up-arrow {
image: url(:/icons/arrow-up-white.svg);
width: 10px;
height: 10px;
}
QHeaderView::down-arrow {
image: url(:/icons/arrow-down-white.svg);
width: 10px;
height: 10px;
}
/* === QScrollBar Vertical === */
QScrollBar:vertical {
@@ -242,35 +182,6 @@ QScrollBar::sub-page:horizontal {
background: transparent;
}
/* === QMenu (für ToolButton Dropdown) === */
QMenu {
background-color: #2b2b2b;
border: 1px solid #3d3d3d;
border-radius: 4px;
padding: 4px;
color: #ffffff;
}
QMenu::item {
padding: 6px 24px 6px 12px;
border-radius: 4px;
margin: 2px;
}
QMenu::item:selected {
background-color: rgba(255, 255, 255, 0.06);
}
QMenu::item:pressed {
background-color: rgba(255, 255, 255, 0.03);
}
QMenu::separator {
height: 1px;
background: #3d3d3d;
margin: 4px 8px;
}
/* === QToolTip === */
QToolTip {
background-color: #323232;

View File

@@ -1,12 +1,18 @@
/* appqss */
/* ===== Fluent Light Mode Theme ===== */
/* Basierend auf Microsoft Fluent Design System */
/* Alle QWidgets bekommen diesen Font */
QWidget
{
font-family: "Calibri", "Carlito", "Open Sans", sans-serif;
font-size: 10pt;
margin: 0px;
padding: 0px;
/* === Color Palette === */
/* Background: #f3f3f3, #ffffff, #fafafa */
/* Accent: #0078d4 (Fluent Blue) */
/* Text: #000000, #1f1f1f */
/* Borders: #e1e1e1, #d1d1d1 */
/* === QWidget Base === */
QWidget {
background-color: #f3f3f3;
color: #1f1f1f;
font-family: "Segoe UI", "Roboto", sans-serif;
font-size: 14px;
}
QLabel#_headerLabel
@@ -15,149 +21,124 @@ QLabel#_headerLabel
/*font-weight: bold;*/
}
/*
QToolButton
{
background-color: white;
color: #201F1E;
border: 1px solid #8A8886;
border-radius: 4px;
min-width: 64px;
max-width: 64px;
min-height: 64px;
max-height: 64px;
}
QToolButton:hover
{
background-color: #F3F2F1;
border: 1px solid #323130;
}
QToolButton:pressed
{
background-color: #EDEBE9;
border: 1px solid #201F1E;
}
QToolButton:disabled
{
background-color: #F3F2F1;
color: #A19F9D;
border: 1px solid #EDEBE9;
}
*/
QWidget:disabled {
color: #a0a0a0;
}
/* === QToolButton === */
QToolButton
{
QToolButton {
background-color: transparent;
color: #000000;
border: none;
color: #1f1f1f;
border: 1px solid transparent;
border-radius: 4px;
padding: 6px;
min-width: 64px;
max-width: 64px;
min-height: 64px;
max-height: 64px;
}
QToolButton:hover
{
background-color: #F9F9F9;
border: 1px solid #DDDDDD;
}
QToolButton:pressed
{
background-color: #E0E0E0;
}
QToolButton:checked
{
background-color: #AAAAAA;
color: #FFFFFF;
}
QToolButton:disabled
{
color: #A19F9D;
background-color: #666666;
}
/* === 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:hover
{
background-color: #e8f4f8;
}
QScrollBar::handle:horizontal
{
background-color: #C8C6C4;
min-width: 40px;
border-radius: 6px;
padding: 6px 12px;
margin: 2px;
}
QScrollBar::handle:horizontal:hover
{
background-color: #A19F9D;
QToolButton:hover {
background-color: rgba(0, 0, 0, 0.03);
border: 1px solid rgba(0, 0, 0, 0.05);
}
QScrollBar::handle:horizontal:pressed
{
background-color: #8A8886;
QToolButton:pressed {
background-color: rgba(0, 0, 0, 0.06);
border: 1px solid rgba(0, 0, 0, 0.08);
}
QScrollBar::add-line:horizontal,
QScrollBar::sub-line:horizontal
{
width: 0px;
QToolButton:checked {
background-color: rgba(0, 120, 212, 0.1);
border: 1px solid #0078d4;
color: #0078d4;
}
QScrollBar::add-page:horizontal,
QScrollBar::sub-page:horizontal
{
background: none;
QToolButton:checked:hover {
background-color: rgba(0, 120, 212, 0.15);
}
QScrollBar:vertical {
QToolButton:disabled {
color: #a0a0a0;
background-color: transparent;
}
/* ToolButton mit Icon */
QToolButton[popupMode="1"] { /* MenuButtonPopup */
padding-right: 20px;
}
QToolButton::menu-button {
border: none;
border-left: 1px solid rgba(0, 0, 0, 0.1);
width: 16px;
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
QToolButton::menu-button:hover {
background-color: rgba(0, 0, 0, 0.05);
}
QToolButton::menu-arrow {
image: url(:/icons/chevron-down-black.svg);
width: 10px;
height: 10px;
}
/* === QTableView === */
QTableView {
background-color: #ffffff;
alternate-background-color: #fafafa;
color: #1f1f1f;
gridline-color: #e1e1e1;
border: 1px solid #d1d1d1;
border-radius: 4px;
selection-background-color: #0078d4;
selection-color: #ffffff;
}
QTableView::item {
padding: 8px;
border: none;
}
QTableView::item:hover {
background-color: rgba(0, 0, 0, 0.03);
}
QTableView::item:selected {
background-color: #0078d4;
color: #ffffff;
}
QTableView::item:selected:hover {
background-color: #005a9e;
}
QTableView::item:selected:!active {
background-color: rgba(0, 120, 212, 0.3);
color: #1f1f1f;
}
/* === QScrollBar Vertical === */
QScrollBar:vertical {
background: transparent;
width: 12px;
margin: 0;
}
QScrollBar::handle:vertical {
background-color: #C8C6C4;
min-height: 40px;
background: rgba(0, 0, 0, 0.25);
min-height: 30px;
border-radius: 6px;
margin: 2px;
}
QScrollBar::handle:vertical:hover {
background-color: #A19F9D;
background: rgba(0, 0, 0, 0.4);
}
QScrollBar::handle:vertical:pressed {
background-color: #8A8886;
background: rgba(0, 0, 0, 0.5);
}
QScrollBar::add-line:vertical,
@@ -167,7 +148,81 @@ QScrollBar::sub-line:vertical {
QScrollBar::add-page:vertical,
QScrollBar::sub-page:vertical {
background: none;
background: transparent;
}
/* === QScrollBar Horizontal === */
QScrollBar:horizontal {
background: transparent;
height: 12px;
margin: 0;
}
QScrollBar::handle:horizontal {
background: rgba(0, 0, 0, 0.25);
min-width: 30px;
border-radius: 6px;
margin: 2px;
}
QScrollBar::handle:horizontal:hover {
background: rgba(0, 0, 0, 0.4);
}
QScrollBar::handle:horizontal:pressed {
background: rgba(0, 0, 0, 0.5);
}
QScrollBar::add-line:horizontal,
QScrollBar::sub-line:horizontal {
width: 0px;
}
QScrollBar::add-page:horizontal,
QScrollBar::sub-page:horizontal {
background: transparent;
}
/* === QToolTip === */
QToolTip {
background-color: #ffffff;
color: #1f1f1f;
border: 1px solid #d1d1d1;
border-radius: 4px;
padding: 6px 8px;
font-size: 13px;
}
/* === Corner Widget (zwischen Scrollbars) === */
QTableView QTableCornerButton::section {
background-color: #fafafa;
border: none;
border-right: 1px solid #e1e1e1;
border-bottom: 1px solid #e1e1e1;
}
/* QLineEdit */
QLineEdit {
background-color: #ffffff;
color: #1f1f1f;
border: 1px solid #d1d1d1;
border-radius: 4px;
padding: 6px 8px;
selection-background-color: #0078d4;
selection-color: #ffffff;
}
QLineEdit:hover {
border: 1px solid #a0a0a0;
}
QLineEdit:focus {
border: 1px solid #0078d4;
border-bottom: 2px solid #0078d4;
}
QLineEdit:disabled {
background-color: #fafafa;
color: #a0a0a0;
border: 1px solid #e1e1e1;
}

View File

@@ -2,47 +2,45 @@
<Bike name='franken-wheeler'>
<Device Type="Console">
<Value ID='Cons_Rev_Hw' Label='Hardware Version' />
<Value ID='Cons_Rev_Sw' Label='Software Version' />
<Device Type='Console'>
<Value ID='Cons_Rev_Hw' Label='Hardware Version' ValueType='Plain'/>
<Value ID='Cons_Rev_Sw' Label='Software Version' ValueType='Plain'/>
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' IsWord='1'/>
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' IsWord='1' />
<Value ID='Cons_Sn_Product_Hi' Label='Product Number' IsWord='1' ValueType='Plain'/>
<Value ID='Cons_Sn_Oem_Hi' Label='OEM Number' IsWord='1' ValueType='Plain'/>
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Min='0' Max='4'/>
<Value ID='Cons_Assist_Initlevel' Label='Assistance Init Level' Min='0' Max='4' ValueType='Number'/>
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
<Value ID='Cons_Assist_Level_4' Label='Assistance Level 4' Factor='1.5625' UnitLabel='%' Min='0' Max='400' ValueType='Float'/>
<Value ID='Cons_Assist_Level_1' Label='Assistance Level 1' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
<Value ID='Cons_Assist_Level_2' Label='Assistance Level 2' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
<Value ID='Cons_Assist_Level_3' Label='Assistance Level 3' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
<Value ID='Cons_Assist_Level_4' Label='Assistance Level 4' Factor='1.5625' UnitLabel='%' Min='0' Max='400' />
<Value ID='Cons_Assist_Maxspeed_Flag' Label='Max Limit Enabled' ValueType='Bool' />
<Value ID='Cons_Assist_Maxspeed_Hi' Label='Max Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' ValueType='Float'/>
<Value ID='Cons_Assist_Maxspeed_Flag' Label='Max Limit Enabled' ValueType='bool' />
<Value ID='Cons_Assist_Maxspeed_Hi' Label='Max Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70'/>
<Value ID='Cons_Assist_Minspeed_Flag' Label='Min Limit Enabled' ValueType='Bool' />
<Value ID='Cons_Assist_Minspeed' Label='Min Speed Limit' UnitLabel='km/h' Min='0' Max='70' ValueType='Float'/>
<Value ID='Cons_Assist_Minspeed_Flag' Label='Min Limit Enabled' ValueType='bool' />
<Value ID='Cons_Assist_Minspeed' Label='Min Speed Limit' UnitLabel='km/h' Min='0' Max='70' />
<Value ID='Cons_Throttle_Maxspeed_Flag' Label='Throttle Limit Enabled' ValueType='Bool'/>
<Value ID='Cons_Throttle_Maxspeed_Hi' Label='Throttle Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' ValueType='Float'/>
<Value ID='Cons_Throttle_Maxspeed_Flag' Label='Throttle Limit Enabled' ValueType='bool'/>
<Value ID='Cons_Throttle_Maxspeed_Hi' Label='Throttle Speed Limit' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' />
<Value ID='Cons_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' />
<Value ID='Cons_Assist_Mountain_Cap' Label='Mountain Cap' UnitLabel='%' Factor='1.5625' />
<Value ID='Cons_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' ValueType='Number'/>
<Value ID='Cons_Assist_Mountain_Cap' Label='Mountain Cap' UnitLabel='%' Factor='1.5625' ValueType='Float'/>
</Device>
<Device Type="Motor">
<Value ID='Motor_Rev_Hw' Label='Hardware Version' />
<Value ID='Motor_Rev_Sw' Label='Software Version' />
<Value ID='Motor_Sn_Item_Hi' Label='Motor Part Number' IsWord='1'/>
<Value ID='Motor_Sn_Item_Hi' Label='Motor Serial Number' IsWord='1' />
<Value ID='Motor_Status_Temperature' Label='Motor Temperature' UnitLabel='°C' />
<Value ID='Motor_Assist_Maxspeed' Label='Motor max. Speed' Reader='Kmh' />
<Device Type='Motor'>
<Value ID='Motor_Rev_Hw' Label='Hardware Version' ValueType='Plain'/>
<Value ID='Motor_Rev_Sw' Label='Software Version' ValueType='Plain'/>
<Value ID='Motor_Sn_Item_Hi' Label='Motor Part Number' ValueType='Plain' IsWord='1'/>
<Value ID='Motor_Sn_Item_Hi' Label='Motor Serial Number' ValueType='Plain' IsWord='1' />
<Value ID='Motor_Status_Temperature' Label='Motor Temperature' ValueType='Float' UnitLabel='°C' />
<Value ID='Motor_Assist_Maxspeed' Label='Motor max. Speed' UnitLabel='km/h' Factor='0.1' Min='0' Max='70' />
<Value ID='Motor_Geometry_Circ_Hi' Label='Wheel Circumference' IsWord='1' UnitLabel='mm' Min='0' Max='2300' Factor='1.5625' />
</Device>
<Device Type="Battery">
<Device Type='Battery'>
<Value ID='Battery_Rev_Hw' Label='Hardware Version' />
<Value ID='Battery_Rev_Sw' Label='Software Version' />
</Device>

View File

@@ -1,119 +0,0 @@
/* --- GEMINI GLOBALE EINSTELLUNGEN --- */
QWidget {
/* Dunkler Hintergrund (Mica-Ersatz) */
background-color: #202020;
/* Fluent Textfarbe (Off-White ist augenschonender als Pure-White) */
color: #e0e0e0;
/* Font Stack: Bevorzugt Segoe, Fallback auf Open Sans (Linux) */
font-family: "Segoe UI", "Open Sans", "Carlito", sans-serif;
}
/* Deaktivierte Widgets */
QWidget:disabled {
color: #606060;
}
/* --- QTOOLBUTTON (INTERACTIVE) --- */
QToolButton {
background-color: transparent;
border: 1px solid transparent;
border-radius: 4px; /* Fluent Rounded Corners */
padding: 6px; /* Touch-freundliches Padding */
margin: 2px;
}
/* Hover-Effekt: Subtiler heller Overlay */
QToolButton:hover {
background-color: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.05);
}
/* Pressed-Effekt: Etwas dunkler/kompakter */
QToolButton:pressed {
background-color: rgba(255, 255, 255, 0.03);
color: #a0a0a0;
}
/* Checked (Toggle) Zustand: Akzentuierter Hintergrund */
QToolButton:checked {
background-color: rgba(96, 205, 255, 0.15); /* Akzentfarbe transparent */
border: 1px solid rgba(96, 205, 255, 0.3);
color: #60CDFF; /* Text in Akzentfarbe */
}
/* --- QTABLEVIEW (DATA) --- */
QTableView {
/* Etwas hellerer Hintergrund als das Fenster für Tiefe */
background-color: #292929;
/* Keine harten Rahmen, Fluent nutzt Whitespace */
border: 1px solid #353535;
border-radius: 6px;
/* Grid-Linien sehr subtil */
gridline-color: #353535;
/* Selection Style */
selection-background-color: #60CDFF; /* Fluent Blue */
selection-color: #000000; /* Schwarzer Text auf hellem Blau für Kontrast */
outline: none; /* Entfernt den punktierten Fokus-Rahmen */
}
QTableView::item {
padding: 5px; /* Luftigkeit */
border: none;
}
QTableView::item:selected {
background-color: #60CDFF;
color: #000000;
}
QTableView::item:hover {
/* Hover über Zeilen (wenn SelectionMode Row ist) */
background-color: rgba(255, 255, 255, 0.05);
}
/* --- HEADER VIEW (SPALTENKÖPFE) --- */
QHeaderView {
background-color: transparent;
border: none;
}
QHeaderView::section {
background-color: #202020; /* Verschmilzt mit Hintergrund */
color: #a0a0a0; /* Sekundäre Textfarbe für Labels */
border: none;
border-bottom: 1px solid #353535; /* Trennlinie zum Inhalt */
padding: 4px 8px;
font-weight: bold;
text-align: left;
}
/* --- SCROLLBARS (MINIMALISTISCH) --- */
/* Standard Linux Scrollbars zerstören den Look, daher custom: */
QScrollBar:vertical {
background: transparent;
width: 12px;
margin: 0px;
}
QScrollBar::handle:vertical {
background: #454545;
min-height: 20px;
border-radius: 6px;
margin: 2px;
}
QScrollBar::handle:vertical:hover {
background: #606060;
}
QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
height: 0px; /* Pfeile oben/unten ausblenden */
}