KM
Katty Misik7 октября 2020 г. 11:50
Как тут сделать мой виджет другим цветом медленно и красиво(возможн при помощи дюрейшн, или любым другим способом)
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();}

Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Ua
- Unknown akadamn
- 24 января 2025 г. 17:14
Qt - Тест 001. Сигналы и слоты
- Результат:84баллов,
- Очки рейтинга4
Ua
- Unknown akadamn
- 24 января 2025 г. 16:22
Qt - Тест 001. Сигналы и слоты
- Результат:42баллов,
- Очки рейтинга-8
Последние комментарии
ИМ
Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Игорь Максимов22 ноября 2024 г. 21:51

Evgenii Legotckoi31 октября 2024 г. 23:37
Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
Игорь Максимов5 октября 2024 г. 16:51
QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Сейчас обсуждают на форуме
f
Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
firstlunoxod15 февраля 2025 г. 13:46

Дмитрий3 февраля 2025 г. 16:24
не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.