【问题标题】:enable/disable widget using mousePressEvent/mouseReleaseEvent使用 mousePressEvent/mouseReleaseEvent 启用/禁用小部件
【发布时间】:2020-12-04 03:33:52
【问题描述】:

我有一组小部件来控制五个相似位置(或通道)中的参数。

现在我可以使用按钮启用/禁用每个小部件,如下所示。

connect(ui->pushButton_currOnOne, &QPushButton::clicked, ui->widget_currentOne, &CurrentButtonOne::setEnabled);
connect(ui->pushButton_currOnTwo, &QPushButton::clicked, ui->widget_currentTwo, &CurrentButtonOne::setEnabled);
connect(ui->pushButton_currOnThree, &QPushButton::clicked, ui->widget_currentThree, &CurrentButtonOne::setEnabled);
connect(ui->pushButton_currOnFour, &QPushButton::clicked, ui->widget_currentFour, &CurrentButtonOne::setEnabled);
connect(ui->pushButton_currOnFive, &QPushButton::clicked, ui->widget_currentFive, &CurrentButtonOne::setEnabled);

在上述情况下,我可以使用mousePressEvent/mouseReleaseEvent 代替&QPushButton::clicked 吗? 如果你能给我举个例子,那将非常有帮助。

提前致谢

【问题讨论】:

标签: qt


【解决方案1】:

一些代码可以帮助您入门。

mybutton.h:

#include <QObject>
#include <QPushButton>
#include <QMouseEvent>

class MyButton : public QPushButton
{
public:
    explicit MyButton(QWidget *parent = nullptr);
    
protected:
    void mousePressEvent(QMouseEvent *e) override;
    void mouseReleaseEvent(QMouseEvent *e) override;
    
private:
    bool isPressed = false;
    
signals:
    void myButtonPressed();
};

mybutton.cpp:

#include "mybutton.h"

MyButton::MyButton(QWidget *parent) : QPushButton(parent)
{
    
}

void MyButton::mousePressEvent(QMouseEvent *e)
{
    isPressed = true;
    emit myButtonPressed();
    QPushButton::mousePressEvent(e);
}

void MyButton::mouseReleaseEvent(QMouseEvent *e)
{
    isPressed = false;
    QPushButton::mouseReleaseEvent(e);
}

我不确定你到底想达到什么目的,但这个想法应该可以满足你的需求。

您创建一个类,该类继承自QPushButton(或QAbstractButton)并覆盖其mousePressEventmouseReleaseEvent。如果您希望其他小部件对此事件做出反应,您可以发出信号并将其他小部件连接到该信号。

【讨论】:

  • 非常感谢您的回答!现在我有了使用 QEvents 的基本概念。补充一点,我要求使用 mousePress/Rlease 事件启用/禁用QWidget(使用鼠标事件切换 Qwidget)。在这种情况下,您有什么建议?
猜你喜欢
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多