#include "topquickbutton.h" #include <QLayout> #include <QMenu> #include <QPainter> #include <QPaintEvent> #include <QVariant> #include <tbaseutil/tresource.h> #include <tbaseutil/ttheme.h> #include <topcore/topclassabs.h> class TopQuickButtonPrivate { Q_DECLARE_PUBLIC(TopQuickButton) public: explicit TopQuickButtonPrivate(TopQuickButton *qptr) : q_ptr(qptr) { } ~TopQuickButtonPrivate() { } QString uidStr; bool modifiedBol = false; bool closableBol = false; bool activedBol = false; bool openedBol = false; QVariant dataVar; protected: TopQuickButton * const q_ptr; }; TopQuickButton::TopQuickButton(QWidget *parent) : QToolButton(parent), d_ptr(new TopQuickButtonPrivate(this)) { setStyleSheet(QString("TopQuickButton{margin:%1px; border:none; background:#2196F3; border-radius:%2px;color:#FFFFFF;}\n" \ "TopQuickButton:hover{border-radius:%3px}\n" \ "QToolButton::menu-indicator{image:None;}") .arg(TTHEME_DP(4)).arg(TTHEME_DP(10)).arg(TTHEME_DP(16))); setFixedSize(QSize(TTHEME_DP(40),TTHEME_DP(40))); } TopQuickButton::~TopQuickButton() { } void TopQuickButton::setUid(const QString &iUidStr) { Q_D(TopQuickButton); d->uidStr = iUidStr; } QString TopQuickButton::uid() const { Q_D(const TopQuickButton); return d->uidStr; } void TopQuickButton::setData(const QVariant &iDataVar) { Q_D(TopQuickButton); d->dataVar = iDataVar; } QVariant TopQuickButton::data() const { Q_D(const TopQuickButton); return d->dataVar; } void TopQuickButton::setModified(bool iBol) { Q_D(TopQuickButton); if (d->modifiedBol != iBol) { d->modifiedBol = iBol; changeStyleSheet(); } } bool TopQuickButton::isModified() const { Q_D(const TopQuickButton); return d->modifiedBol; } void TopQuickButton::setClosable(bool iBol) { Q_D(TopQuickButton); d->closableBol = iBol; } bool TopQuickButton::isClosable() const { Q_D(const TopQuickButton); return d->closableBol; } void TopQuickButton::setActived(bool iBol) { Q_D(TopQuickButton); if (d->activedBol != iBol) { d->activedBol = iBol; changeStyleSheet(); } } bool TopQuickButton::isActived() const { Q_D(const TopQuickButton); return d->activedBol; } void TopQuickButton::setOpened(bool iBol) { Q_D(TopQuickButton); if (d->openedBol != iBol) { d->openedBol = iBol; changeStyleSheet(); } } bool TopQuickButton::isOpened() const { Q_D(const TopQuickButton); return d->openedBol; } void TopQuickButton::changeStyleSheet() { // setStyleSheet(QString(".TopQuickButton{background-color:%1;padding:0px;}\n" // ".TopQuickButton:hover{%2;border: none;}") // .arg(isActived() ? "rgba(255,255,255,0.15)" : "transparent") // .arg(isActived() ? "transparent" : "background:rgba(255,255,255,0.15)")); }