From e99e3caa095fe0b1c36124bfeb2fdda08f45e167 Mon Sep 17 00:00:00 2001 From: Elliott Liggett Date: Sat, 10 Feb 2024 12:40:17 -0800 Subject: [PATCH] Meter combo box goes away if outside click. --- meter.cpp | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/meter.cpp b/meter.cpp index ff78f9c..5d147ef 100644 --- a/meter.cpp +++ b/meter.cpp @@ -63,9 +63,9 @@ meter::meter(QWidget *parent) : QWidget(parent) connect(combo, SIGNAL(activated(int)), this, SLOT(acceptComboItem(int))); //connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(acceptComboItem(int))); + this->setToolTip(""); combo->hide(); this->installEventFilter(this); - } void meter::setCompReverse(bool reverse) { @@ -125,12 +125,23 @@ void meter::clearMeter() update(); } -void meter::setMeterType(meter_t type) +void meter::setMeterType(meter_t m_type_req) { - if(type == meterType) + if(m_type_req == meterType) return; - meterType = type; + if( (m_type_req == meterS) || (m_type_req == meterPower) ) { + this->setToolTip(""); + } else { + this->setToolTip("Double-click to select meter type."); + } + + int m_index = combo->findData(m_type_req); + combo->blockSignals(true); + combo->setCurrentIndex(m_index); + combo->blockSignals(false); + + meterType = m_type_req; // clear average and peak vectors: this->clearMeter(); } @@ -179,13 +190,26 @@ void meter::handleDoubleClick() { } bool meter::eventFilter(QObject *object, QEvent *event) { + + if( (freezeDrawing) && (event->type() == QEvent::MouseButtonPress) ) { + combo->hide(); + freezeDrawing = false; + return true; + } + + if( (freezeDrawing) && (event->type() == QEvent::MouseButtonDblClick) ) { + combo->hide(); + freezeDrawing = false; + return true; + } + if(event->type() == QEvent::MouseButtonDblClick) { - qDebug() << "Mouse double click event in meter widget"; if( !(meterType == meterS || meterType == meterPower)) { handleDoubleClick(); } return true; } + (void)object; return false; }