bool UIWidget::propagateOnMouseRelease(const Point& mousePos, Fw::MouseButton button) { // do a backup of children list, because it may change while looping it UIWidgetList children; for(const UIWidgetPtr& child : m_children) { // events on hidden or disabled widgets are discarded if(!child->isExplicitlyEnabled() || !child->isExplicitlyVisible()) continue; // mouse release events go to all children children.push_back(child); } for(const UIWidgetPtr& child : children) { if(child->propagateOnMouseRelease(mousePos, button)) return true; } bool ret = onMouseRelease(mousePos, button); if(isPressed() && button == Fw::MouseLeftButton) setPressed(false); return ret; }
void DockAppItem::mouseReleaseEvent(QMouseEvent *event) { //mouse event accept area are app-icon-area in FashionMode if (m_dockModeData->getDockMode() != Dock::FashionMode) onMouseRelease(event); else QFrame::mouseReleaseEvent(event); }
void Record::mouseReleaseEvent(QMouseEvent *event) { if(event->button() == Qt::LeftButton) { // konstatnta 100 == aktuální zoom if (m_StartTime != oldStartTime) { relocateByMouseMove(m_Id, oldStartTime); } onMouseRelease(m_Id, m_StartTime, m_EndTime, m_Name); } this->setToolTip("Name: " + m_Name + "\n" + "StartTime: " + QString::number(m_StartTime) + "\n" + "EndTime: " + QString::number(m_EndTime)); this->setToolTipDuration(0); event->ignore(); }
bool DesignerEventHandler::eventFilter(QObject* o, QEvent* e) { switch (e->type()){ // case QEvent::ContextMenu: // qDebug () << "context menu event !!!"; // break; case QEvent::MouseButtonPress: //context_widget = dynamic_cast<VtlWidget*>(o); onMousePress((QMouseEvent*)e); break; case QEvent::MouseMove: onMouseMove((QMouseEvent*)e); break; case QEvent::MouseButtonRelease: onMouseRelease((QMouseEvent*)e); //context_widget = 0; break; case QEvent::MouseButtonDblClick: showWidgetProperties(); break; case QEvent::ContextMenu: //qDebug () << o->className(); qDebug () << "context menu event !!!"; onContextMenu((QContextMenuEvent*)e); break; case QEvent::KeyPress: onKeyPress((QKeyEvent*)e); break; // case QEvent::Paint: // onPaintEvent ( static_cast<QPaintEvent*>(e) ); // break; case OutsideEvent::Outside:{ VtlWidget * w = ((OutsideEvent *)e)->widget(); if (selections[w]){ selections[w]->updateSelectionPos(); } } return true; case AddToSelEvent::AddToSel: if (static_cast<AddToSelEvent*>(e)->clearSel()) clearSelection( ); addWidgetToSelection(static_cast<AddToSelEvent*>(e)->widget()); return true; default: break; } return QObject::eventFilter(o, e); }
void ofxDatGuiComponent::update(bool acceptEvents) { // if window does not have focus x & y will both be zero // if (acceptEvents && mEnabled && mVisible){ bool mp = ofGetMousePressed(); ofPoint mouse = ofPoint(ofGetMouseX() - mParentPosition.x, ofGetMouseY() - mParentPosition.y); if (hitTest(mouse)){ if (!mMouseOver){ onMouseEnter(mouse); } if (!mMouseDown && mp){ onMousePress(mouse); if (!mFocused) onFocus(); } } else{ // the mouse is not over the component // if (mMouseOver){ onMouseLeave(mouse); } if (!mMouseDown && mp && mFocused){ onFocusLost(); } } if (mMouseDown) { if (mp){ onMouseDrag(mouse); } else{ onMouseRelease(mouse); } } } // don't update children unless they're visible // if (this->getIsExpanded()) { for(int i=0; i<children.size(); i++) { children[i]->update(acceptEvents); if (children[i]->getFocused()){ if (acceptEvents == false ) children[i]->setFocused(false); acceptEvents = false; } } } }
bool updateMouse() { if (mouse_fd < 0) { return false; } struct input_event mousee; while ( readMouseEvent(&mousee) ) { mouse.velX=0; mouse.velY=0; float x,y = 0.0f; int button = 0; switch(mousee.type) { // Update Mouse Event case EV_KEY: switch (mousee.code) { case BTN_LEFT: if (mousee.value == 1){ button = 1; } break; case BTN_RIGHT: if(mousee.value == 1){ button = 2; } break; case BTN_MIDDLE: if(mousee.value == 1){ button = 3; } break; default: button = 0; break; } if (button != mouse.button) { mouse.button = button; if(mouse.button == 0){ onMouseRelease(mouse.x,mouse.y); } else { onMouseClick(mouse.x,mouse.y,mouse.button); } } break; case EV_REL: switch (mousee.code) { case REL_X: mouse.velX = mousee.value; break; case REL_Y: mousee.value = mousee.value * -1; mouse.velY = mousee.value; break; // case REL_WHEEL: // if (mousee.value > 0) // std::cout << "Mouse wheel Forward" << std::endl; // else if(mousee.value < 0) // std::cout << "Mouse wheel Backward" << std::endl; // break; default: break; } mouse.x+=mouse.velX; mouse.y+=mouse.velY; // Clamp values if (mouse.x < 0) mouse.x=0; if (mouse.y < 0) mouse.y=0; if (mouse.x > viewport.z) mouse.x = viewport.z; if (mouse.y > viewport.w) mouse.y = viewport.w; if (mouse.button != 0) { onMouseDrag(mouse.x,mouse.y,mouse.button); } else { onMouseMove(mouse.x,mouse.y); } break; case EV_ABS: switch (mousee.code) { case ABS_X: x = ((float)mousee.value/4095.0f)*viewport.z; mouse.velX = x - mouse.x; mouse.x = x; break; case ABS_Y: y = (1.0-((float)mousee.value/4095.0f))*viewport.w; mouse.velY = y - mouse.y; mouse.y = y; break; default: break; } if (mouse.button != 0) { onMouseDrag(mouse.x,mouse.y,mouse.button); } else { onMouseMove(mouse.x,mouse.y); } break; default: break; } } return true; }
InMapItemDialog::InMapItemDialog(MapInfo* mapinfo,MapManager* manager,MapItem* mapitem,QWidget *parent) : QDialog(parent), mapInfo(mapinfo), mapManager(manager), returnItem(mapitem), selectScene(new QGraphicsScene(this)), selectRect(0), baseItems(new Sprite()), ui(new Ui::InMapItemDialog) { ui->setupUi(this); if(returnItem) { ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("修改")); this->change = true; } else { ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("确定")); this->change = false; } ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("取消")); ui->tileHeight->setSingleStep(DEF_MAPBASE_HEIGHT); ui->tileHeight->setPageStep(DEF_MAPBASE_HEIGHT); ui->tileWidth->setSingleStep(DEF_MAPBASE_WIDTH); ui->tileWidth->setPageStep(DEF_MAPBASE_WIDTH); connect(ui->tileWidth,SIGNAL(sliderReleased()),this,SLOT(rule_slider())); connect(ui->tileHeight,SIGNAL(sliderReleased()),this,SLOT(rule_slider())); connect(ui->buttonBox,SIGNAL(accepted()),this,SLOT(ok_click())); connect(ui->buttonBox,SIGNAL(rejected()),this,SLOT(cancel_click())); connect(ui->tileWidth,SIGNAL(sliderMoved(int)),ui->tileWidthLabel,SLOT(setNum(int))); connect(ui->tileHeight,SIGNAL(sliderMoved(int)),ui->tileHeightLabel,SLOT(setNum(int))); connect(ui->tileWidth,SIGNAL(valueChanged(int)),ui->tileWidthLabel,SLOT(setNum(int))); connect(ui->tileHeight,SIGNAL(valueChanged(int)),ui->tileHeightLabel,SLOT(setNum(int))); ui->itemView->setScene(selectScene); baseItems->setPixmap(this->mapInfo->base); connect(baseItems,SIGNAL(onMouseRelease(qreal,qreal,Qt::MouseButtons)),this,SLOT(select_item_on_mouse_press(qreal,qreal,Qt::MouseButtons))); this->selectScene->addItem(baseItems); if(this->returnItem) { //判断是否是修改MapItem对象 this->ui->checkTypeBox->setValue(this->returnItem->checkType); this->ui->crossTypeBox->setValue(this->returnItem->crossType); this->ui->tileWidth->setValue(this->returnItem->getWidth()); this->ui->tileWidthLabel->setNum(this->returnItem->getWidth()); this->ui->tileHeight->setValue(this->returnItem->getHeight()); this->ui->tileHeightLabel->setNum(this->returnItem->getHeight()); this->ui->xSpinBox->setValue(this->returnItem->mapX); this->ui->ySpinBox->setValue(this->returnItem->mapY); this->ui->zSpinBox->setValue(this->returnItem->mapZ); this->ui->specialSpinBox->setValue(this->returnItem->special); this->ui->staminaSpinBox->setValue(this->returnItem->breakType); this->ui->itemNameEdit->setText(this->returnItem->typeName); this->changeSelectBase(this->returnItem->hindex,this->returnItem->vindex); this->ui->itemView->centerOn(this->selectRect); } else { this->returnItem = new MapItem(this->mapInfo->base); select_item_on_mouse_press(1.0,1.0,0); // 默认选择贴图1,1 } }
void Sprite::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { emit onMouseRelease(event->pos().x(),event->pos().y(),event->buttons()); }