QWidget with doubleclick

QWidget with doubleclick

本文关键字:doubleclick with QWidget      更新时间:2023-10-16

我希望能够双击qpushbutton而不是单击。

我尝试的是:

connect(pb, SIGNAL(doubleClicked()), this, SLOT(comBtnPressed()));

错误说" qobject ::连接:没有这样的信号qpushbutton :: doubleclicked()"

我最初选择了Qpushbutton,但是出于我的目的,您可以建议使用DoubleClick事件,以更改为其他对象。不一定是按钮。

谢谢QT和C 的大师。

一个简单的解决方案是创建我们自己的小部件,因此我们覆盖了鼠标clubleclicekevent方法,您可以覆盖paintevent以绘制小部件:

#ifndef DOUBLECLICKEDWIDGET_H
#define DOUBLECLICKEDWIDGET_H
#include <QWidget>
#include <QPainter>
class DoubleClickedWidget : public QWidget
{
    Q_OBJECT
public:
    explicit DoubleClickedWidget(QWidget *parent = nullptr):QWidget(parent){
        setFixedSize(20, 20);
    }
signals:
    void doubleClicked();
protected:
    void mouseDoubleClickEvent(QMouseEvent *){
        emit doubleClicked();
    }
    void paintEvent(QPaintEvent *){
        QPainter painter(this);
        painter.fillRect(rect(), Qt::green);
    }
};
#endif // DOUBLECLICKEDWIDGET_H

如果您想与QT设计器一起使用它,则可以如下link所示。

然后连接:

//new style
connect(ui->widget, &DoubleClickedWidget::doubleClicked, this, &MainWindow::onDoubleClicked);
//old style
connect(ui->widget, SIGNAL(doubleClicked), this, SLOT(onDoubleClicked));

在以下链接中有一个示例。