Qt实现Elementui警告的样式
这个是elemnt-ui的原先样式
这个是qt实现的基本样式
核心代码如下:
头文件#ifndef DTPOPUPWINDOW_H #define DTPOPUPWINDOW_H #include #include namespace Ui { class DTPopupWindow; } enum E_POPUP_TYPE { E_WARNING = 0, // 警告弹窗 E_ERROR, // 错误 E_INFO, // 消息 E_SUCCESS, // 成功 }; class DTPopupWindow : public QWidget { Q_OBJECT public: explicit DTPopupWindow(QWidget *parent = nullptr); ~DTPopupWindow(); /******设置弹窗类型**********/ void setPopupType(const E_POPUP_TYPE& popupType) { m_popupType = popupType; } void setPopupText(const QString&); void popupShow(); private slots: void slotTimer(); private: Ui::DTPopupWindow *ui; E_POPUP_TYPE m_popupType = E_POPUP_TYPE::E_INFO; QTimer* m_timer ; }; #endif // DTPOPUPWINDOW_H
实现部分:cpp#include "dtpopupwindow.h" #include "ui_dtpopupwindow.h" #include #include #define SUCCESS_BACKGROUND_COLOR QString("240, 249, 235") #define WARNING_BACKGROUND_COLOR QString("253, 246, 236") #define INFO_BACKGROUND_COLOR QString("244, 244, 245") #define ERROR_BACKGROUND_COLOR QString("254, 240, 240") #define SUCCESS_FONT_COLOR QString("103, 194, 58") #define WARNING_FONT_COLOR QString("230, 162, 60") #define INFO_FONT_COLOR QString("205, 173, 153") #define ERROR_FONT_COLOR QString("247, 108, 108") DTPopupWindow::DTPopupWindow(QWidget *parent) : QWidget(parent), ui(new Ui::DTPopupWindow) { setWindowFlags(Qt::WindowStaysOnTopHint); // 置顶 setWindowFlag(Qt::FramelessWindowHint); // setAttribute(Qt::WA_StyledBackground, true); // setStyleSheet("background-color: rgb(61, 60, 64); font: 12px; color: #EAEAEA;"); ui->setupUi(this); m_timer = new QTimer(this); // timer->setSingleShot(true);//仅触发一次 connect(m_timer, SIGNAL(timeout()), this, SLOT(slotTimer())); } DTPopupWindow::~DTPopupWindow() { delete ui; } void DTPopupWindow::setPopupText(const QString & qsText) { ui->lbl_tip->setText(qsText); } void DTPopupWindow::slotTimer() { m_timer->stop(); this->hide(); } void DTPopupWindow::popupShow() { QDesktopWidget *deskTop=QApplication::desktop(); auto deskRect=deskTop->availableGeometry(); QPoint normalPoint; normalPoint.setX(deskRect.width()/2 - this->width() /2); normalPoint.setY(20); this->setGeometry(normalPoint.x(),normalPoint.y(),this->width(),this->height()); QString base_color = ("QWidget { background-color: rgb(%1); font: 14px; color: rgb(%2) }"); switch (m_popupType) { case E_POPUP_TYPE::E_SUCCESS: { QString qsBB = base_color.arg(SUCCESS_BACKGROUND_COLOR).arg(SUCCESS_FONT_COLOR); this->setStyleSheet(base_color.arg(SUCCESS_BACKGROUND_COLOR).arg(SUCCESS_FONT_COLOR)); break; } case E_POPUP_TYPE::E_WARNING: { this->setStyleSheet(base_color.arg(WARNING_BACKGROUND_COLOR).arg(WARNING_FONT_COLOR)); break; } case E_POPUP_TYPE::E_INFO: { this->setStyleSheet(base_color.arg(INFO_BACKGROUND_COLOR).arg(INFO_FONT_COLOR)); break; } case E_POPUP_TYPE::E_ERROR: { this->setStyleSheet(base_color.arg(ERROR_BACKGROUND_COLOR).arg(ERROR_FONT_COLOR)); break; } default: break; } this->show(); m_timer->start(6000); // 持续6秒 }
ui文件部分QT开发交流+赀料君羊:714620761/******************************************************************************** ** Form generated from reading UI file "dtpopupwindow.ui" ** ** Created by: Qt User Interface Compiler version 5.14.2 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef UI_DTPOPUPWINDOW_H #define UI_DTPOPUPWINDOW_H #include #include #include #include #include #include QT_BEGIN_NAMESPACE class Ui_DTPopupWindow { public: QHBoxLayout *horizontalLayout; QSpacerItem *horizontalSpacer; QLabel *lbl_tip; QSpacerItem *horizontalSpacer_2; void setupUi(QWidget *DTPopupWindow) { if (DTPopupWindow->objectName().isEmpty()) DTPopupWindow->setObjectName(QString::fromUtf8("DTPopupWindow")); DTPopupWindow->resize(493, 60); QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(DTPopupWindow->sizePolicy().hasHeightForWidth()); DTPopupWindow->setSizePolicy(sizePolicy); DTPopupWindow->setMinimumSize(QSize(0, 60)); DTPopupWindow->setMaximumSize(QSize(16777215, 60)); horizontalLayout = new QHBoxLayout(DTPopupWindow); horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); horizontalSpacer = new QSpacerItem(193, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); horizontalLayout->addItem(horizontalSpacer); lbl_tip = new QLabel(DTPopupWindow); lbl_tip->setObjectName(QString::fromUtf8("lbl_tip")); horizontalLayout->addWidget(lbl_tip); horizontalSpacer_2 = new QSpacerItem(192, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); horizontalLayout->addItem(horizontalSpacer_2); retranslateUi(DTPopupWindow); QMetaObject::connectSlotsByName(DTPopupWindow); } // setupUi void retranslateUi(QWidget *DTPopupWindow) { DTPopupWindow->setWindowTitle(QCoreApplication::translate("DTPopupWindow", "Form", nullptr)); lbl_tip->setText(QCoreApplication::translate("DTPopupWindow", "TextLabel", nullptr)); } // retranslateUi }; namespace Ui { class DTPopupWindow: public Ui_DTPopupWindow {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_DTPOPUPWINDOW_H
使用方式:DTPopupWindow popWindow; popWindow.setPopupType(popType); popWindow.setPopupText(qsInfo); popWindow.popupShow();
目前该方法已经支持了警告、成功、提示和失败四种样式
人类有多幸运?科学家3个巧合,让地球成为一颗生命星球现代科学认为,地球诞生于46亿年前,也就是太阳系诞生初期,在50亿年前,太阳系一片混乱,太阳诞生以后,吸收了周围大量的物质,所以太阳的质量是太阳系中最大的,太阳的质量占到了太阳系总
政治杂音难掩奥林匹克精神的光芒雷钟哲中国网时事评论员北京时间28日晚,国际乒乓球联合会官方微博发表声明,强烈反对一切形式的种族主义。声明称,我们绝不容忍任何种族主义言论或行为,我们正与当地组委会紧密合作,以杜绝
科普知识星系中的生命存在贺俊杰文(原国家863高科技项目总工程师)星系中一定有生命存在,这是不争的事实,咱们银河系光是恒星就超过了一千亿颗以上,行星更是多的无法计算,应该说存在生命的星球是数不胜数。这一千
大运动发展越好,孩子越聪明?脑科学做好这两点就能提升智力我们经常会遇到这种情况,年龄差不多的孩子,大运动发展情况却大不相同,有的孩子10个月就会走路了,有的孩子15个月才逐渐走稳当,有的孩子6个月就爬得飞快,有的孩子9个月才学会爬行,还
如果太阳突然消失,地球会怎么样?如果系列3太阳对于地球的重要性是不言而喻的,地球上所有的能源本质上都直接或间接来自太阳。太阳每秒产生的能量相当于1亿颗氢弹同时爆炸,它为地球上的生命提供能量。同时,太阳也是太阳系内引力的关键
中国人造太阳如何了?韩国30秒破记录,温度是真太阳的8倍韩国人造太阳的确破纪录了,不过破的是他们自己的纪录,而不是世界纪录!当然,要是不了解人造太阳,那还是可以让不少人觉得很厉害,公开的数据是这样的1亿摄氏度的温度,相当于真实太阳的8倍
大雪时节4不做,2不吃,冬天少生病,早知道早受益大雪节气,二十四节气中的第21个节气,大雪节气期间,有很多传统的习俗,比如常见的有腌肉打雪仗赏雪景等等。大雪时节,气温显著下降,降水量增多,从天气以及日常生活中来看,也有一些不能做
NBA最新排名!太阳篮网领跑,灰熊最大黑马字母哥生日夜获胜12月7日,NBA常规赛继续进行,今天的比赛都很精彩,其中包括了灰熊击败热火豪取5连胜,勇士和太阳也都赢了球,字母哥生日夜获胜,8连败球队交手雷霆击败活塞,开拓者不敌快船。接下来我
人类距离太阳最近的时刻一辈子见不到的画面被拍成写真,太美了这是人类距离太阳最近的时刻,一位美国太空摄影师在观测太阳时,竟然发现了宇宙诞生之初的奇观。今天我们就跟着这部纪录片一起,看看太阳内部究竟是什么样子的。2018年8月12日,美国宇航
宇宙太大无法了解?那就先从地球月亮和太阳说起和宇宙有关的一切宇宙就像一串无穷的套娃,小的外边有大的,大的外边有更大的,更大的外边没有最大的,因为宇宙是无边无垠的,而且它一直在膨胀。1太阳大月亮小,月亮绕着地球跑,月球是地球的
大雪夜深知雪重大雪已至仲冬,寒气方盛,保暖御寒自然是第一位的。但现代人喜欢走极端,习惯于窝在暖气空调房内,把温度调得很高,甚至穿着单衣,过着夏天般的生活。这样毛孔处于开泄状态,违反了冬天的闭藏之