KM
Katty MisikOct. 7, 2020, 1:50 a.m.
Как тут сделать мой виджет другим цветом медленно и красиво(возможн при помощи дюрейшн, или любым другим способом)
qt, setDuration, Animation, Widget, ui, label
#include "pinpoint.h" #include "ui_pinpoint.h" #include <QPropertyAnimation> #include <interfaces/fastproxystyle.h> Connection& PinPoint::getConnection() { return connection; } int PinPoint::getId() const { return id; } void PinPoint::setId(int value) { id = value; } PinPoint::PinPoint(QWidget *parent) : QWidget(parent), connection(nullptr), ui(new Ui::PinPoint), notConnected("Punkt", "Blad", Error::Priority::CriticalError, true), m_colorAnimation(this, "color"), zoneViolation("Alarm", "Naruszenie strefy", Error::Priority::CriticalError, true,true,true,"Sprawdź stan strefy") { ui->setupUi(this); this->layout()->setAlignment(ui->label, Qt::AlignCenter); connect(ui->pin, &PointShape::mouseOver, this, &PinPoint::mouseOverPin); connect(ui->pin, &PointShape::setupDeclared, this, &PinPoint::setupDeclared); connect(&connection, &Connection::currentStateUpdated, this, &PinPoint::updateState); connect(&connection, &Connection::updateView, this, &PinPoint::updateView); connect(&connection.getZonesWidget(), &ZonesListWidget::updateDB, this, &PinPoint::onUpdateEmit); this->setStyle(new FastProxyStyle(this->style())); connect(ui->pin, &PointShape::mouseOver1, this, &PinPoint::NoWidget); // connect(this, &PinPoint::mouseOverPin, this, [ui->pin](){ ui->pin->setStyleSheet("background-color: red;"); }); // m_colorAnimation(this, "color"); //connect(ui->pin, &PointShape::mouseOver1, this, &PinPoint::mouseOverPin2); } void PinPoint::fillSetup(const QString& address, const QString& name) { setIP(address); setName(name); connection.setConnectionData(getIP(), 7094); } void PinPoint::updateState(CustomState *state, QList<Zone*> source){ if(!source.isEmpty()) { if(state==&connection.getZonesWidget().alarm || state==&connection.getZonesWidget().silentAlarm) { QString helpString=""; foreach(auto item, source) { helpString+=item->getId()+" "; } zoneViolation.setSource(this->getText()); zoneViolation.setValue("Problem w jednostce "+this->getText()+" (IP: "+this->getIP().toString()+"). Wystąpił "+state->getName()+" w strefach: "+helpString); generateError(zoneViolation); } else cancelError(zoneViolation); } ui->pin->setState(*state); refreshHint(); //TUTAJ DODAC ALARMY /*if(ui->pin->state!=_state && (_state == Global::States::ALARM || _state==Global::States::CON_LOST)) generateError(notConnected); else if((ui->pin->state==Global::States::ALARM && _state!=Global::States::ALARM) || (ui->pin->state==Global::States::CON_LOST && _state!=Global::States::CON_LOST)) cancelError(notConnected); ui->pin->setState(_state);*/ } void PinPoint::updateView(const QHostAddress& address, uint16_t port) { ui->label_2->setText(address.toString()); Q_UNUSED(port) } void PinPoint::onUpdateEmit() { emit(updateDatabase(*this)); } void PinPoint::copy() { } void PinPoint::setPos(const QPointF &pos) { position = pos; this->move(Converter::toPointToMiddle(position, size())); } bool PinPoint::isFakeElement() { return (getIP().toString()=="0.0.0.0"); } void PinPoint::SetColor(const QColor& color) { m_currentColor = color; // QString css = "QPushButton { border-radius: 5px; "; // css.append("border: 1.5px solid rgb(91,231,255); "); QString strColor = QString("rgb(%1, %2, %3)").arg(color.red()).arg(color.green()).arg(color.blue()); // css.append("background-color: " + strColor + "; }"); // setStyleSheet(css); } const QColor& PinPoint::GetColor() const { return m_currentColor; } void PinPoint::mouseOverPin(){ raise(); if(!isFakeElement()) emit mouseOverMe(); m_colorAnimation.stop(); m_colorAnimation.setDuration(900); m_colorAnimation.setStartValue(GetColor()); m_colorAnimation.setEndValue(QColor(100, 100, 100)); m_colorAnimation.setEasingCurve(QEasingCurve::Linear); m_colorAnimation.start(); // ui->label->setStyleSheet("font-size: 13px;\ncolor: black;\nbackground-color: limegreen ;\npadding: 1px 3px 2px 3px;\nborder-top: 1px solid rgb(20, 19, 50);\nborder-radius: 5px;\nfont-weight:400; "); // ui->widget->setStyleSheet("border-top-left-radius: 3px;\nborder-top-right-radius: 3px;\nborder-bottom-right-radius: 3px;\nborder-bottom-left-radius: 3px; background-color: black ; "); // ui->label_2->setStyleSheet("color:white;\nfont-size: 11px;\nfont-weight:500;\nbackground:darkgreen;\npadding:1px 3px; "); } void PinPoint::NoWidget() { m_colorAnimation.stop(); m_colorAnimation.setDuration(900); m_colorAnimation.setStartValue(GetColor()); m_colorAnimation.setEndValue(QColor(255, 0, 0)); m_colorAnimation.setEasingCurve(QEasingCurve::Linear); m_colorAnimation.start(); //StartHoverEnterAnimation(); // m_colorAnimation.stop(); // m_colorAnimation.setDuration(900); //set your transition // m_colorAnimation.setStartValue(GetColor()); //starts from current color // m_colorAnimation.setEndValue(QColor(255, 0, 0));//set your regular color // m_colorAnimation.setEasingCurve(QEasingCurve::Linear);//animation style // m_colorAnimation.start(); // m_colorAnimation.stop(); // m_colorAnimation.setDuration(900); //set your transition // m_colorAnimation.setStartValue(Qt::White); //starts from current color // m_colorAnimation.setEndValue(QColor(100, 100, 100));//set your hover color // m_colorAnimation.setEasingCurve(QEasingCurve::Linear);//animation style // m_colorAnimation.start(); // ui->label->setStyleSheet("font-size: 13px;\ncolor: rgb(225, 225, 245);\nbackground-color: rgb(31, 34, 68);\npadding: 1px 3px 2px 3px;\nborder-top: 1px solid rgb(20, 19, 50);\nborder-radius: 5px;\nfont-weight:400; "); // ui->widget->setStyleSheet("border-top-left-radius: 3px;\nborder-top-right-radius: 3px;\nborder-bottom-right-radius: 3px;\nborder-bottom-left-radius: 3px; "); // ui->label_2->setStyleSheet("color:white;\nfont-size: 11px;\nfont-weight:500;\nbackground:rgb(34, 34, 34);\npadding:1px 3px; "); } void PinPoint::setName(const QString &text) { ui->label->setText(text); notConnected.setSource(text); notConnected.setValue("Alarm w obiekcie "+text+" (ip:"+getIP().toString()+")!"); } void PinPoint::refreshHint() { this->setToolTip("Nazwa: "+ui->label->text()+"\nIP: "+this->getIP().toString()+"\n"+connection.getZonesWidget().getInfoString()); } void PinPoint::setIP(const QString& ip) { connection.setCentralAddress(QHostAddress(ip)); ui->label_2->setText(ip); refreshHint(); } PinPoint::~PinPoint(){delete ui;} QPointF PinPoint::getPos() {return position;} QString PinPoint::getText() {return this->ui->label->text();} QString PinPoint::getStateString(){return ui->pin->getStateString();} QHostAddress PinPoint::getIP(){return connection.getCentralAddress();}
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
l
- laei
- April 23, 2024, 7:19 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:10points,
- Rating points-10
Last comments
Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Lesson 007. Working with ICMP Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий КононенкоFeb. 5, 2024, 12:50 p.m.
EVADec. 25, 2023, 9:30 p.m.
Boost - static linking in CMake project under Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Lesson 056. Connecting the Boost library in Qt for MinGW and MSVC compilers Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Now discuss on the forum
DA
Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
Dr Gangil AcademicsApril 20, 2024, 5:45 p.m.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел ДорофеевApril 14, 2024, 12:35 p.m.
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…