Added experimental flat layout, part I
This commit is contained in:
@@ -210,14 +210,10 @@ void BCAnimatedDelegate::paint(QPainter *painter, const QStyleOptionViewItem& op
|
||||
*/
|
||||
|
||||
int row = index.row();
|
||||
|
||||
if (index.column() == 1 )
|
||||
{
|
||||
qDebug() << " --- is highlight: " << row << " : " << index.column();
|
||||
//if( m_rowOpacities.contains(row))
|
||||
{
|
||||
qDebug() << " --- PAINT highlight:";
|
||||
//if ( m_rowOpacities.contains(row))
|
||||
if( m_rowOpacities.contains(row))
|
||||
{
|
||||
paintHighlightRow(painter,option,index);
|
||||
}
|
||||
}
|
||||
@@ -247,7 +243,7 @@ void BCAnimatedDelegate::paintHighlightRow(QPainter* painter, const QStyleOption
|
||||
QRect itemRect = option.rect.adjusted(3, 3, -3, -3);
|
||||
|
||||
// Border von 2px berücksichtigen (nach innen)
|
||||
QRect contentRect = itemRect.adjusted(2, 2, -2, -2);
|
||||
//QRect contentRect = itemRect.adjusted(2, 2, -2, -2);
|
||||
// painter->fillRect(contentRect,Qt::green);
|
||||
/*
|
||||
// Hintergrund (weiß)
|
||||
|
||||
@@ -29,13 +29,13 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<layout class="QHBoxLayout" name="_horizontalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="_buttonWidget" native="true">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: grey;</string>
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<layout class="QVBoxLayout" name="_verticalLayout">
|
||||
<item alignment="Qt::AlignmentFlag::AlignHCenter">
|
||||
<widget class="QToolButton" name="_motorButton">
|
||||
<property name="minimumSize">
|
||||
@@ -53,6 +53,9 @@
|
||||
<height>64</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignmentFlag::AlignHCenter">
|
||||
@@ -72,6 +75,9 @@
|
||||
<height>64</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignmentFlag::AlignHCenter">
|
||||
@@ -91,6 +97,9 @@
|
||||
<height>64</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignmentFlag::AlignHCenter">
|
||||
@@ -110,6 +119,9 @@
|
||||
<height>48</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
@@ -160,9 +172,18 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>3</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="BCDeviceView" name="_consolePanel">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Shadow::Plain</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="showGrid">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
@@ -174,6 +195,15 @@
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="BCDeviceView" name="_motorPanel">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Shadow::Plain</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="showGrid">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
@@ -185,6 +215,15 @@
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="BCDeviceView" name="_batteryPanel">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Shadow::Plain</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="showGrid">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
@@ -196,6 +235,15 @@
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="BCDeviceView" name="_pimpPanel">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::NoFrame</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Shadow::Plain</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="showGrid">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
|
||||
103
main.cpp
103
main.cpp
@@ -31,27 +31,10 @@
|
||||
|
||||
|
||||
#include <QApplication>
|
||||
#include <QMetaEnum>
|
||||
#include <QFile>
|
||||
#include <QLabel>
|
||||
#include <QProgressBar>
|
||||
|
||||
// main.cpp
|
||||
#include <QCoreApplication>
|
||||
#include <QTimer>
|
||||
#include <QDebug>
|
||||
|
||||
#include <bcmainwindow.h>
|
||||
#include <bcvalue.h>
|
||||
#include <bcdatamanager.h>
|
||||
|
||||
#include <variant>
|
||||
#include <string>
|
||||
|
||||
|
||||
|
||||
|
||||
#include <QThread>
|
||||
|
||||
bool setApplicationStyleSheet( QAnyStringView path )
|
||||
{
|
||||
@@ -63,98 +46,14 @@ bool setApplicationStyleSheet( QAnyStringView path )
|
||||
styleFile.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
qWarning() << "Konnte Stylesheet nicht laden:" << styleFile.errorString();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
struct moo
|
||||
{
|
||||
QString moo_str {"irgendwas"};
|
||||
};
|
||||
|
||||
// Verschiedene Datentypen für die Sensoren
|
||||
struct Temperature : public moo{ float celsius; };
|
||||
struct CpuLoad : public moo{ int percentage; };
|
||||
struct Status : public moo{ std::string message; };
|
||||
|
||||
// Die Variant als universeller Datencontainer
|
||||
using SensorReadingPtr = std::variant<Temperature*, CpuLoad*, Status*>;
|
||||
|
||||
|
||||
|
||||
struct UIUpdateVisitor
|
||||
{
|
||||
QLabel* tempLabel;
|
||||
QProgressBar* cpuBar;
|
||||
QLabel* statusLabel;
|
||||
|
||||
// Überladene operator() für jeden Typ in der Variant
|
||||
double operator()(Temperature* t) const
|
||||
{
|
||||
//tempLabel->setText(QString("Temp: %1°C").arg(t.celsius, 0, 'f', 1));
|
||||
//tempLabel->setStyleSheet(t.celsius > 40 ? "color: red;" : "color: black;");
|
||||
return -1;
|
||||
}
|
||||
|
||||
double operator()(CpuLoad* c) const
|
||||
{
|
||||
cpuBar->setValue(c->percentage);
|
||||
qDebug() << c->moo_str;
|
||||
return -42.0;
|
||||
}
|
||||
|
||||
double operator()(const Status* s) const
|
||||
{
|
||||
//statusLabel->setText(QString::fromStdString(s.message));
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
|
||||
void onNewDataReceived(const SensorReadingPtr& data)
|
||||
{
|
||||
QLabel* labelTemp = nullptr;
|
||||
QProgressBar* progressCpu = nullptr;
|
||||
QLabel* labelStatus = nullptr;
|
||||
|
||||
// Wir erstellen den Visitor mit Referenzen auf unsere UI-Elemente
|
||||
UIUpdateVisitor visitor { labelTemp, progressCpu, labelStatus };
|
||||
|
||||
// Die Magie: std::visit wählt zur Kompilierzeit die richtige Methode
|
||||
double result = std::visit(visitor, data);
|
||||
Q_UNUSED(result)
|
||||
|
||||
|
||||
Temperature myTemp{};
|
||||
SensorReadingPtr xxx{&myTemp};
|
||||
double result2 = std::visit(visitor, SensorReadingPtr{&myTemp} );
|
||||
}
|
||||
|
||||
struct mookoo
|
||||
{
|
||||
QString a="firz";
|
||||
int b=2;
|
||||
double c=1.0;
|
||||
QString hidden{"Fatz!"};
|
||||
};
|
||||
|
||||
struct mookoo2 : public mookoo
|
||||
{
|
||||
int another;
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
//setApplicationStyleSheet( ":/bionxcontrol.qss"_L1 );
|
||||
|
||||
|
||||
mookoo myMookoo{"",1,1.0};
|
||||
mookoo myMooko2{"",1};
|
||||
mookoo2* myMooko3 = new mookoo2{{"superfitze",1},8};
|
||||
|
||||
qDebug() << " --- haha: " << myMooko3->a << ": " << myMooko3->hidden;
|
||||
setApplicationStyleSheet( ":/bionxcontrol.qss"_L1 );
|
||||
|
||||
BCMainWindow w;
|
||||
w.show();
|
||||
|
||||
@@ -6,17 +6,13 @@ QWidget
|
||||
font-size: 14px;
|
||||
font-family: Segoe UI, sans-serif;
|
||||
}
|
||||
|
||||
/*
|
||||
QMainWindow
|
||||
{
|
||||
background-color: #272727;
|
||||
}
|
||||
*/
|
||||
|
||||
QSplitter
|
||||
{
|
||||
color: red;
|
||||
background-color: #272727;
|
||||
}
|
||||
/* Spezifisches Styling für Buttons */
|
||||
QPushButton
|
||||
{
|
||||
@@ -72,14 +68,8 @@ QToolButton:disabled {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Styling anhand von Objektnamen (ID) */
|
||||
#loginButton
|
||||
{
|
||||
font-weight: bold;
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
QListView
|
||||
/*
|
||||
QTableView
|
||||
{
|
||||
background-color: #404142;
|
||||
border-radius: 8px;
|
||||
@@ -87,7 +77,7 @@ QListView
|
||||
show-decoration-selected: 0;
|
||||
}
|
||||
|
||||
QListView::item
|
||||
QTableView::item
|
||||
{
|
||||
border: 2px solid #2196F3;
|
||||
border-radius: 8px;
|
||||
@@ -95,26 +85,28 @@ QListView::item
|
||||
margin: 4px;
|
||||
background-color: white;
|
||||
}
|
||||
*/
|
||||
|
||||
QListView::item:hover
|
||||
QTableView::item:hover
|
||||
{
|
||||
border-color: #FF9800;
|
||||
background-color: #fff8f0;
|
||||
}
|
||||
|
||||
QListView::item:selected
|
||||
QTableView::item:selected
|
||||
{
|
||||
border-color: #F44336; /* Roter Rahmen */
|
||||
background-color: #ffebee;
|
||||
}
|
||||
|
||||
QListView::item:selected:hover
|
||||
QTableView::item:selected:hover
|
||||
{
|
||||
border-color: #FF9800;
|
||||
background-color: #ffe0b2;
|
||||
}
|
||||
*/
|
||||
|
||||
QListView::item:focus
|
||||
QTableView::item:focus
|
||||
{
|
||||
/*
|
||||
// outline: none; Entfernt das Focus-Rectangle
|
||||
|
||||
Reference in New Issue
Block a user