diff --git a/movewidget/frmmovewidget.cpp b/movewidget/frmmovewidget.cpp index 6cc5cc4..a74b5a6 100644 --- a/movewidget/frmmovewidget.cpp +++ b/movewidget/frmmovewidget.cpp @@ -24,18 +24,29 @@ void frmMoveWidget::initForm() btn1->setText("按住我拖动(仅限左键拖动)"); MoveWidget *moveWidget1 = new MoveWidget(this); moveWidget1->setWidget(btn1); + moveWidget1->setLeftButton(true); + moveWidget1->setRightButton(false); QPushButton *btn2 = new QPushButton(this); btn2->setGeometry(10, 40, 250, 25); - btn2->setText("按住我拖动(支持右键拖动)"); + btn2->setText("按住我拖动(仅限右键拖动)"); MoveWidget *moveWidget2 = new MoveWidget(this); moveWidget2->setWidget(btn2); moveWidget2->setLeftButton(false); + moveWidget2->setRightButton(true); + + QPushButton *btn3 = new QPushButton(this); + btn3->setGeometry(10, 70, 250, 25); + btn3->setText("按住我拖动(支持左右键拖动)"); + MoveWidget *moveWidget3 = new MoveWidget(this); + moveWidget3->setWidget(btn3); + moveWidget3->setLeftButton(true); + moveWidget3->setRightButton(true); QProgressBar *bar = new QProgressBar(this); - bar->setGeometry(10, 70, 250, 25); + bar->setGeometry(10, 100, 250, 25); bar->setRange(0, 0); bar->setTextVisible(false); - MoveWidget *moveWidget3 = new MoveWidget(this); - moveWidget3->setWidget(bar); -} \ No newline at end of file + MoveWidget *moveWidget4 = new MoveWidget(this); + moveWidget4->setWidget(bar); +} diff --git a/movewidget/movewidget.cpp b/movewidget/movewidget.cpp index 7f57248..7151088 100644 --- a/movewidget/movewidget.cpp +++ b/movewidget/movewidget.cpp @@ -6,7 +6,8 @@ MoveWidget::MoveWidget(QObject *parent) : QObject(parent) { lastPoint = QPoint(0, 0); pressed = false; - leftButton = true; + leftButton = false; + rightButton = false; inControl = true; widget = 0; } @@ -16,8 +17,12 @@ bool MoveWidget::eventFilter(QObject *watched, QEvent *event) if (widget != 0 && watched == widget) { QMouseEvent *mouseEvent = (QMouseEvent *)event; if (mouseEvent->type() == QEvent::MouseButtonPress) { - //如果限定了只能鼠标左键拖动则判断当前是否是鼠标左键 - if (leftButton && mouseEvent->button() != Qt::LeftButton) { + //如果鼠标左键和鼠标右键都可以拖动 + if (leftButton && rightButton) { + + } + //如果限定了只能鼠标左键拖动则判断当前是否是鼠标左键,如果限定了只能鼠标右键拖动则判断当前是否是鼠标右键 + else if ((leftButton && mouseEvent->button() != Qt::LeftButton) || (rightButton && mouseEvent->button() != Qt::RightButton)) { return false; } @@ -68,6 +73,11 @@ void MoveWidget::setLeftButton(bool leftButton) this->leftButton = leftButton; } +void MoveWidget::setRightButton(bool rightButton) +{ + this->rightButton = rightButton; +} + void MoveWidget::setInControl(bool inControl) { this->inControl = inControl; diff --git a/movewidget/movewidget.h b/movewidget/movewidget.h index d39d917..9dd6447 100644 --- a/movewidget/movewidget.h +++ b/movewidget/movewidget.h @@ -34,12 +34,15 @@ private: QPoint lastPoint; //最后按下的坐标 bool pressed; //鼠标是否按下 bool leftButton; //限定鼠标左键 + bool rightButton; //限定鼠标右键 bool inControl; //限定在容器内 QWidget *widget; //移动的控件 public Q_SLOTS: //设置是否限定鼠标左键 void setLeftButton(bool leftButton); + //设置是否限定鼠标右键 + void setRightButton(bool rightButton); //设置是否限定不能移出容器外面 void setInControl(bool inControl); //设置要移动的控件