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!
AD
- Akiv Doros
- Nov. 11, 2024, 11:58 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
m
- molni99
- Oct. 25, 2024, 10:37 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
m
- molni99
- Oct. 25, 2024, 10:29 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Last comments
Evgenii LegotckoiOct. 31, 2024, 11:37 a.m.
Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь МаксимовOct. 5, 2024, 4:51 a.m.
QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Now discuss on the forum
Evgenii LegotckoiJune 24, 2024, 12:11 p.m.
t
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
tonypeachey1Nov. 15, 2024, 3:04 a.m.
NSProjectJune 4, 2022, 12:49 a.m.
IscanderCheOct. 31, 2024, 12:43 p.m.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…