feat: restore changes func

This commit is contained in:
semenov
2024-10-04 10:23:53 +03:00
parent 7481b35485
commit 7e3c20425a
25 changed files with 890 additions and 712 deletions

View File

@@ -1,11 +1,15 @@
#include "screenchecker.h"
#include <QLabel>
#include <QBitmap>
#include <QToolButton>
#include <QPainter>
ScreenChecker::ScreenChecker(DataParser *dataParser, QHBoxLayout *layout, QObject *parent) :
ScreenChecker::ScreenChecker(QWidget *mainWidget,DataParser *dataParser, QHBoxLayout *layout, QObject *parent) :
QObject(parent)
{
screenCount = 0;
this->mainWidget = mainWidget;
this->layout = layout;
this->dataParser = dataParser;
}
@@ -14,6 +18,20 @@ void ScreenChecker::check()
{
screens = QGuiApplication::screens();
QPixmap checkedPixmap(":resource/Icons/checked.png");
checkedPixmap = checkedPixmap.scaled(20,20);
QPainter painter;
QColor color(51,153,0,255);
painter.begin(&checkedPixmap);
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
painter.fillRect(checkedPixmap.rect(),color);
painter.end();
QIcon checkedIcon;
checkedIcon.addPixmap(checkedPixmap,QIcon::Disabled,QIcon::On);
qint8 sizeVertical = 90;
quint16 sizeHorizontal = 150;
@@ -31,7 +49,10 @@ void ScreenChecker::check()
QString sizeText = QString::number(display->size().width()) + "x" + QString::number(display->size().height());
sizeText.append("\n");
sizeText.append(QString::number(display->refreshRate()) + "Hz");
QPushButton *button = new QPushButton(sizeText);
QToolButton *button = new QToolButton();
button->setText(sizeText);
button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
button->setObjectName("displayView");
buttons.append(button);
@@ -41,9 +62,19 @@ void ScreenChecker::check()
float ratio = width / height;
QSize *sizeResult;
if(height > width){
QPushButton *checkedLabel = new QPushButton;
checkedLabel->setParent(button);
checkedLabel->setIcon(checkedIcon);
checkedLabel->setObjectName("checkedLabelButton");
checkedLabel->setGeometry(3,3,30,30);
if(height > width)
{
sizeResult = new QSize(sizeVertical,sizeVertical / ratio);
}else{
}
else
{
sizeResult = new QSize(sizeHorizontal,sizeHorizontal/ ratio);
}
@@ -51,18 +82,16 @@ void ScreenChecker::check()
button->setMaximumSize(*sizeResult);
button->setCheckable(true);
connect(button,&QPushButton::clicked,this,&ScreenChecker::updateDisplayData);
if(i == 0){
if(i == 0)
{
button->setChecked(true);
button->setFlat(true);
QPalette palette= button->palette();
button->setEnabled(false);
palette.setColor(QPalette::Background,QColor(Qt::blue));
palette.setColor(QPalette::ButtonText,QColor(Qt::black));
button->setPalette(palette);
}
labels.append(checkedLabel);
connect(button,&QToolButton::clicked,this,&ScreenChecker::updateDisplayData);
}
updateDisplayData();
@@ -74,8 +103,15 @@ void ScreenChecker::updateDisplayData()
for (int i = 0; i <buttons.count();i++)
{
if(buttons[i]->isChecked()){
QToolButton *button = buttons[i];
if(button->isChecked())
{
displays->append(i);
labels[i]->show();
}
else
{
labels[i]->hide();
}
}

View File

@@ -9,25 +9,29 @@
#include <QDebug>
#include <QPushButton>
#include <QHBoxLayout>
#include <QToolButton>
#include <QLabel>
class ScreenChecker : public QObject
{
Q_OBJECT
public:
explicit ScreenChecker(DataParser *dataParser, QHBoxLayout *layout,QObject *parent = nullptr);
explicit ScreenChecker(QWidget *widget,DataParser *dataParser, QHBoxLayout *layout,QObject *parent = nullptr);
~ScreenChecker();
void check();
QString getScreenCount() const;
private:
QWidget *mainWidget;
DataParser *dataParser;
QWidget *widget;
QHBoxLayout *layout;
qint64 screenCount;
QList<QScreen *> screens;
QList<QPushButton *> buttons;
QList<QToolButton *> buttons;
QList<QPushButton *> labels;
void updateDisplayData();
};