Sun, 09 Apr 2023 17:05:40 +0300
Simplify signature of openModelFromPath
#include <QColorDialog> #include <QHBoxLayout> #include "widgets/coloredit.h" ColorEdit::ColorEdit(const QColor& color, QWidget* parent) : ColorEdit{parent} { this->setColor(color); } ColorEdit::ColorEdit(QWidget* parent) : QWidget{parent}, lineEdit{new QLineEdit{this}}, button{new QPushButton{"…", this}} { auto*const layout = new QHBoxLayout{}; layout->addWidget(this->lineEdit); layout->addWidget(this->button); layout->setStretch(0, 1); layout->setStretch(1, 0); this->setLayout(layout); connect(this->button, &QPushButton::clicked, [&](){ const QColor color = QColorDialog::getColor(this->color(), this->parentWidget()); if (color.isValid()) { this->setColor(color); } }); connect(this->lineEdit, &QLineEdit::textChanged, [&]{ const QColor color = this->color(); const qreal lightness = color.lightnessF(); const QColor foreground = lightness < 0.4 ? Qt::white : Qt::black; this->setStyleSheet( QStringLiteral("QLineEdit{background-color: %1; color: %2;}") .arg(color.name()) .arg(foreground.name())); Q_EMIT this->colorChanged(this->color()); }); this->setColor(Qt::black); } QColor ColorEdit::color() const { return QColor{this->lineEdit->text()}; } void ColorEdit::setColor(const QColor& color) { if (color.isValid() and this->color() != color) { this->lineEdit->setText(color.name()); } }