Meter combo box goes away if outside click.

creator-widgets
Elliott Liggett 2024-02-10 12:40:17 -08:00
rodzic c41d697ab7
commit e99e3caa09
1 zmienionych plików z 29 dodań i 5 usunięć

Wyświetl plik

@ -63,9 +63,9 @@ meter::meter(QWidget *parent) : QWidget(parent)
connect(combo, SIGNAL(activated(int)), this, SLOT(acceptComboItem(int))); connect(combo, SIGNAL(activated(int)), this, SLOT(acceptComboItem(int)));
//connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(acceptComboItem(int))); //connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(acceptComboItem(int)));
this->setToolTip("");
combo->hide(); combo->hide();
this->installEventFilter(this); this->installEventFilter(this);
} }
void meter::setCompReverse(bool reverse) { void meter::setCompReverse(bool reverse) {
@ -125,12 +125,23 @@ void meter::clearMeter()
update(); update();
} }
void meter::setMeterType(meter_t type) void meter::setMeterType(meter_t m_type_req)
{ {
if(type == meterType) if(m_type_req == meterType)
return; 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: // clear average and peak vectors:
this->clearMeter(); this->clearMeter();
} }
@ -179,13 +190,26 @@ void meter::handleDoubleClick() {
} }
bool meter::eventFilter(QObject *object, QEvent *event) { 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) { if(event->type() == QEvent::MouseButtonDblClick) {
qDebug() << "Mouse double click event in meter widget";
if( !(meterType == meterS || meterType == meterPower)) { if( !(meterType == meterS || meterType == meterPower)) {
handleDoubleClick(); handleDoubleClick();
} }
return true; return true;
} }
(void)object; (void)object;
return false; return false;
} }