| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #include "xtextbutton.h"
- #include <QtDebug>
- XTextButton::XTextButton(QString title,QWidget *parent):QWidget(parent)
- {
- m_button = new QPushButton();
- m_button->setText(title);
- connect(m_button,SIGNAL(clicked()),this,SLOT(onClick()));
- setButtonTextColor(XButtonDefault);
- m_layout = new QVBoxLayout();
- m_layout->setContentsMargins(0,0,0,0);
- m_layout->addWidget(m_button);
- setLayout(m_layout);
- m_button->installEventFilter(this);
- m_button->setContentsMargins(0,0,0,0);
- }
- void XTextButton::setText(QString title)
- {
- m_button->setText(title);
- }
- XTextButton::~XTextButton()
- {
- delete m_button;
- delete m_layout;
- }
- bool XTextButton::eventFilter(QObject *target, QEvent *event)
- {
- XButtonState state = XButtonNone;
- if (target == m_button)
- {
- if (event->type() == QEvent::Enter)
- {
- state = XButtonEnter;
- }
- else if (event->type() == QEvent::Leave)
- {
- state = XButtonDefault;
- }
- else if (((QMouseEvent *)event)->button() == Qt::LeftButton)
- {
- if (event->type() == QEvent::MouseButtonPress)
- {
- state = XButtonPress;
- }
- if (event->type() == QEvent::MouseButtonRelease)
- {
- state = XButtonEnter;
- }
- }
- if(m_button->isEnabled())
- {
- if (state != XButtonNone)
- {
- setButtonTextColor(state);
- }
- }
- }
- return QWidget::eventFilter(target, event);
- }
- void XTextButton::setEnabled(bool ok)
- {
- m_button->setEnabled(ok);
- }
- void XTextButton::setButtonTextColor(XButtonState state)
- {
- switch(state)
- {
- case XButtonEnter:
- m_button->setStyleSheet("border:0px;color:#1a91dd");
- m_button->setCursor(Qt::PointingHandCursor);
- break;
- default:
- m_button->setStyleSheet("border:0px;color:#1a91dd");
- m_button->setCursor(Qt::ArrowCursor);
- break;
- }
- }
- void XTextButton::onClick()
- {
- emit clicked();
- }
|