QWidget* QtnPropertyDelegateQStringList::createValueEditorImpl(QWidget* parent, const QRect& rect, QtnInplaceInfo* inplaceInfo) { if (!owner().isEditableByUser()) { QLineEdit *lineEdit = new QLineEdit(parent); lineEdit->setReadOnly(true); lineEdit->setText(owner().value()); lineEdit->setGeometry(rect); return lineEdit; } QComboBox* editor = new QComboBox(parent); editor->setGeometry(rect); editor->addItems(m_items); new QtnPropertyQStringListComboBoxHandler(owner(), *editor); if (inplaceInfo) { editor->showPopup(); } return editor; }
bool KCBooleanDelegate::eventFilter(QObject *object, QEvent *event) { QComboBox * comboBox = dynamic_cast<QComboBox*>(object); if (comboBox) { if (event->type() == QEvent::MouseButtonRelease) { comboBox->showPopup(); return true; } } else return QStyledItemDelegate::eventFilter(object, event); return false; }
// Avoid setting data - and therefore show that the editor keeps its state. void setEditorData(QWidget* w, const QModelIndex &) const { QComboBox *combobox = qobject_cast<QComboBox*>(w); if (combobox) { qDebug() << "Try to show popup at once"; // Now we could try to make a call to // QCoreApplication::processEvents(); // But it does not matter. The fix: // https://codereview.qt-project.org/40608 // is blocking QComboBox from reacting to this doubleclick edit event // and we need to do that since the mouseReleaseEvent has not yet happened, // and therefore cannot be processed. combobox->showPopup(); } }
QWidget *ComboBoxDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem& option, const QModelIndex& index) const { Position c = index.column(); if (c >= 2) return QItemDelegate::createEditor(parent, option, index); QComboBox* editor = new QComboBox(parent); if (c == 0) editor->addItems(sl_modifier_); else editor->addItems(sl_keys_); editor->setEditable(false); editor->setFrame(false); editor->setDuplicatesEnabled(false); editor->installEventFilter(const_cast<ComboBoxDelegate*>(this)); editor->showPopup(); return editor; }
QWidget* QtnPropertyDelegateEnum::createValueEditorImpl(QWidget* parent, const QRect& rect, QtnInplaceInfo* inplaceInfo) { const QtnEnumInfo* info = owner().enumInfo(); if (!info) return 0; if (owner().isEditableByUser()) { QComboBox* combo = new QComboBox(parent); info->forEachEnumValue([combo](const QtnEnumValueInfo &value)->bool { combo->addItem(value.name(), QVariant(value.value())); return true; }); combo->setGeometry(rect); new QtnPropertyEnumComboBoxHandler(owner(), *combo); if (inplaceInfo) combo->showPopup(); return combo; } else { const QtnEnumValueInfo* valueInfo = info->findByValue(owner()); if (!valueInfo) return 0; QLineEdit* lineEdit = new QLineEdit(parent); lineEdit->setReadOnly(true); lineEdit->setText(valueInfo->name()); lineEdit->setGeometry(rect); return lineEdit; } }
QWidget* QtnPropertyDelegateQBrushStyle::createValueEditorImpl(QWidget* parent, const QRect& rect, QtnInplaceInfo* inplaceInfo) { if (owner().isEditableByUser()) { QComboBox* combo = new QtnPropertyBrushStyleComboBox(parent); combo->setLineEdit(nullptr); combo->setItemDelegate(new QtnPropertyBrushStyleItemDelegate()); if (m_showAll) { for (auto bs = Qt::NoBrush; bs <= Qt::ConicalGradientPattern; bs = Qt::BrushStyle(bs + 1)) { combo->addItem("", QVariant::fromValue(bs)); } combo->addItem("", QVariant::fromValue(Qt::TexturePattern)); } else { combo->addItem("", QVariant::fromValue(Qt::NoBrush)); combo->addItem("", QVariant::fromValue(Qt::SolidPattern)); combo->addItem("", QVariant::fromValue(Qt::HorPattern)); combo->addItem("", QVariant::fromValue(Qt::VerPattern)); combo->addItem("", QVariant::fromValue(Qt::CrossPattern)); combo->addItem("", QVariant::fromValue(Qt::BDiagPattern)); combo->addItem("", QVariant::fromValue(Qt::FDiagPattern)); combo->addItem("", QVariant::fromValue(Qt::DiagCrossPattern)); } combo->setGeometry(rect); new QtnPropertyBrushStyleComboBoxHandler(owner(), *combo); if (inplaceInfo) combo->showPopup(); return combo; } return nullptr; }
bool CDlgAlmECG::eventFilter(QObject *o,QEvent *e) { QObject *obj[]={ m_cmbb_xinlv ,m_spb_xinlv_high ,m_spb_xinlv_low ,m_cmbb_st ,m_spb_st_high ,m_spb_st_low ,m_btn_ok, m_btn_cancel }; int iTotalObj = 8;//11 int iOkPos = iTotalObj -2; int iCancelPos = iTotalObj -1; if(e->type() == QEvent::KeyPress) { QKeyEvent *event=(QKeyEvent *)e; switch (event->key()) { case Qt::Key_Up: case Qt::Key_Left: if(bCursorSta == false) { if(iCursor == 0) { iCursor = iTotalObj-1; } else { iCursor -=1; } if((iCursor>=0) &&(iCursor<iOkPos)) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else { if((iCursor == 1)|| (iCursor == 5)|| (iCursor == 2)|| (iCursor == 4) ) { QSpinBox *p = (QSpinBox *)obj[iCursor]; if(p->value()!= p->minimum()) { p->setValue(p->value()-1); } else { p->setValue(p->maximum()); } } } return true; break; case Qt::Key_Down: case Qt::Key_Right: if(bCursorSta == false) { if(iCursor == iTotalObj-1) { iCursor = 0; } else { iCursor +=1; } if((iCursor>=0) &&(iCursor<(iOkPos-1))) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else { if((iCursor == 1)|| (iCursor == 5)|| (iCursor == 2)|| (iCursor == 4) ) { QSpinBox *p = (QSpinBox *)obj[iCursor]; if(p->value()!= p->maximum()) { p->setValue(p->value()+1); } else { p->setValue(p->minimum()); } } } return true; break; case Qt::Key_Return: if(bCursorSta == false) { if(iCursor == iOkPos) { do_ok_clicked(); } else if(iCursor == iCancelPos) { do_cancel_clicked(); } else if((iCursor==0) ||(iCursor==3)||(iCursor==6)) { //btn[iCursor]->showPopup(); bCursorSta = false; QComboBox *p = (QComboBox *)obj[iCursor]; p->showPopup(); //p->setStyleSheet("background-color: rgb(35, 53, 234,255);"); } else if((iCursor == 1)|| (iCursor == 5)|| (iCursor == 2)|| (iCursor == 4) ) { bCursorSta = true; QSpinBox *p = (QSpinBox *)obj[iCursor]; } } else { bCursorSta = false; } return true; break; default: CMainForm *p = (CMainForm *)pMainForm; p->f_process_key(event->key()); return true; break; } } else { return false; } }
bool CDlgSetMashen::eventFilter(QObject *o,QEvent *e) { QObject *obj[]={ m_cmbb_ap ,m_cmbb_speed ,m_btn_ok ,m_btn_cancel }; int iTotalObj = 4;//11 int iOkPos = iTotalObj -2; int iCancelPos = iTotalObj -1; if(e->type() == QEvent::KeyPress) { QKeyEvent *event=(QKeyEvent *)e; switch (event->key()) { case Qt::Key_Up: case Qt::Key_Left: if(bCursorSta == false) { if(iCursor == 0) { iCursor = iTotalObj-1; } else { iCursor -=1; } if((iCursor>=0) &&(iCursor<iOkPos)) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else { } return true; break; case Qt::Key_Down: case Qt::Key_Right: if(bCursorSta == false) { if(iCursor == iTotalObj-1) { iCursor = 0; } else { iCursor +=1; } if((iCursor>=0) &&(iCursor<iOkPos)) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else { } return true; break; case Qt::Key_Return: if(bCursorSta == false) { if(iCursor == iOkPos) { do_ok_clicked(); } else if(iCursor == iCancelPos) { do_cancel_clicked(); } else if((iCursor>=0) &&(iCursor<iOkPos)) { //btn[iCursor]->showPopup(); bCursorSta = false; QComboBox *p = (QComboBox *)obj[iCursor]; p->showPopup(); //p->setStyleSheet("background-color: rgb(35, 53, 234,255);"); } } else { } return true; break; default: CMainForm *p = (CMainForm *)pMainForm; p->f_process_key(event->key()); return true; break; } } else { return false; } }
bool CDlgServManCfgPara::eventFilter(QObject *o,QEvent *e) { QObject *obj[]={ m_cmbb_xindian ,m_cmbb_xueyang ,m_cmbb_huxi ,m_cmbb_tiwen ,m_cmbb_nibp ,m_cmbb_mashen ,m_cmbb_ibp1 ,m_cmbb_ibp2 ,m_cmbb_co2 ,m_cmbb_qushi ,m_cmbb_baojinghuigu ,m_cmbb_boxinghuigu ,m_cmbb_jiemian ,m_cmbb_yaowujisuan ,m_cmbb_daolianleixing ,m_btn_ok ,m_btn_cancel }; int iTotalObj = 17;//11 int iOkPos = iTotalObj -2; int iCancelPos = iTotalObj -1; if(e->type() == QEvent::KeyPress) { QKeyEvent *event=(QKeyEvent *)e; switch (event->key()) { case Qt::Key_Up: case Qt::Key_Left: if(bCursorSta == false) { if(iCursor == 0) { iCursor = iTotalObj-1; } else { iCursor -=1; } if((iCursor>=0) &&(iCursor<iOkPos)) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else { } return true; break; case Qt::Key_Down: case Qt::Key_Right: if(bCursorSta == false) { if(iCursor == iTotalObj-1) { iCursor = 0; } else { iCursor +=1; } if((iCursor>=0) &&(iCursor<iOkPos)) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else { } return true; break; case Qt::Key_Return: if(bCursorSta == false) { if(iCursor == iOkPos) { do_ok_clicked(); } else if(iCursor == iCancelPos) { do_cancel_clicked(); } else if((iCursor>=0) &&(iCursor<iOkPos)) { //btn[iCursor]->showPopup(); bCursorSta = false; QComboBox *p = (QComboBox *)obj[iCursor]; p->showPopup(); //p->setStyleSheet("background-color: rgb(35, 53, 234,255);"); } } else { } return true; break; default: CMainForm *p = (CMainForm *)pMainForm; p->f_process_key(event->key()); return true; break; } } else { return false; } }
bool CDlgSetColor::eventFilter(QObject *o,QEvent *e) { QObject *obj[]={ m_cmbb_beat_rate ,m_cmbb_spo2 ,m_cmbb_spire_rate ,m_cmbb_temp ,m_cmbb_nibp ,m_cmbb_mashen ,m_cmbb_ibp1 ,m_cmbb_ibp2 ,m_cmbb_co2 ,m_cmbb_wav_eeg ,m_cmbb_wav_ecg1 ,m_cmbb_wav_ecg2 ,m_cmbb_wav_ecg3 ,m_cmbb_wav_ecg4 ,m_cmbb_wav_ecg5 ,m_cmbb_wav_ecg6 ,m_cmbb_wav_ecg7 ,m_cmbb_wav_pulse ,m_cmbb_wav_spr ,m_cmbb_wav_ibp1 ,m_cmbb_wav_ibp2 ,m_cmbb_wav_co2 ,m_cmbb_wav_mashen ,m_btn_ok ,m_btn_cancel }; int iTotalObj = 25;// int iOkPos = iTotalObj -2; int iCancelPos = iTotalObj -1; if(e->type() == QEvent::KeyPress) { QKeyEvent *event=(QKeyEvent *)e; switch (event->key()) { case Qt::Key_Up: case Qt::Key_Left: if(bCursorSta == false) { if(iCursor == 0) { iCursor = iTotalObj-1; } else { iCursor -=1; } if((iCursor>=0) &&(iCursor<iOkPos)) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else {/* if((iCursor >= 7)&&(iCursor <=10)) { QSpinBox *p = (QSpinBox *)obj[iCursor]; if(p->value()!= p->minimum()) { p->setValue(p->value()-1); } else { p->setValue(p->maximum()); } }*/ } return true; break; case Qt::Key_Down: case Qt::Key_Right: if(bCursorSta == false) { if(iCursor == iTotalObj-1) { iCursor = 0; } else { iCursor +=1; } if((iCursor>=0) &&(iCursor<iOkPos)) { QComboBox *p = (QComboBox *)obj[iCursor]; p->setFocus(); } else { QPushButton *p = (QPushButton *)obj[iCursor]; p->setFocus(); } } else {/* if((iCursor >= 7)&&(iCursor <=10)) { QSpinBox *p = (QSpinBox *)obj[iCursor]; if(p->value()!= p->maximum()) { p->setValue(p->value()+1); } else { p->setValue(p->minimum()); } }*/ } return true; break; case Qt::Key_Return: if(bCursorSta == false) { if(iCursor == iOkPos) { do_ok_clicked(); } else if(iCursor == iCancelPos) { do_cancel_clicked(); } else if((iCursor>=0) &&(iCursor<iOkPos)) { //btn[iCursor]->showPopup(); bCursorSta = false; QComboBox *p = (QComboBox *)obj[iCursor]; p->showPopup(); //p->setStyleSheet("background-color: rgb(35, 53, 234,255);"); } } else {/* bCursorSta = false; if((iCursor >= 7)&&(iCursor <=10)) { QSpinBox *p = (QSpinBox *)obj[iCursor]; //p->setStyleSheet("background-color: rgb(255, 255, 255);");; } //obj[iCursor]->setStyleSheet("background-color: rgb(255, 255, 255);"); */ } return true; break; default: CMainForm *p = (CMainForm *)pMainForm; p->f_process_key(event->key()); return true; break; } } else { return false; } }