diff --git a/bitbutton.h b/bitbutton.h --- a/bitbutton.h +++ b/bitbutton.h @@ -36,7 +36,10 @@ void paintEvent(QPaintEvent *event) override; private: + void enterEvent(QEvent * event) override; + void leaveEvent(QEvent * event) override; bool on_; + bool over_; }; #endif diff --git a/bitbutton.cpp b/bitbutton.cpp --- a/bitbutton.cpp +++ b/bitbutton.cpp @@ -28,7 +28,7 @@ // Name: BitButton // Desc: constructor //------------------------------------------------------------------------------ -BitButton::BitButton(QWidget *parent) : QAbstractButton(parent), on_(false) { +BitButton::BitButton(QWidget *parent) : QAbstractButton(parent), on_(false) , over_(false) { // too many bits for tab focus setFocusPolicy(Qt::ClickFocus); @@ -43,6 +43,8 @@ } setFixedSize(size.expandedTo(QApplication::globalStrut())); + + this->setAttribute(Qt::WA_Hover, true); } //------------------------------------------------------------------------------ @@ -63,3 +65,27 @@ on_ = value; update(); } + +//------------------------------------------------------------------------------ +// Name: enterEvent +// Desc: sets to true the "over" variable on Enter event +//------------------------------------------------------------------------------ +void BitButton::enterEvent(QEvent * event) { + + if (event->type() == QEvent::Enter) { + over_ = true; + update(); + } +} + +//------------------------------------------------------------------------------ +// Name: leaveEvent +// Desc: sets to false the "over" variable on Leave event +//------------------------------------------------------------------------------ +void BitButton::leaveEvent(QEvent * event) { + + if (event->type() == QEvent::Leave) { + over_ = false; + update(); + } +} diff --git a/kcalc_bitset.cpp b/kcalc_bitset.cpp --- a/kcalc_bitset.cpp +++ b/kcalc_bitset.cpp @@ -41,12 +41,17 @@ void BitButton::paintEvent(QPaintEvent *) { QPainter painter(this); - QPen pen(palette().text(), 2); + QPen pen(palette().text(), 1); pen.setJoinStyle(Qt::MiterJoin); painter.setPen(pen); if (on_) { painter.setBrush(palette().text()); + } else if (over_) { + painter.setBrush(QColor(palette().text().color().red(), + palette().text().color().green(), + palette().text().color().blue(), + 128)); } else { painter.setBrush(palette().base()); } @@ -87,6 +92,7 @@ for (int bit = 0; bit < 8; bit++) { BitButton *const tmpBitButton = new BitButton(this); + tmpBitButton->setToolTip(tr("Bit ") + QString::number(bitCounter)); wordlayout->addWidget(tmpBitButton); bit_button_group_->addButton(tmpBitButton, bitCounter); bitCounter--;