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

我试过的

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

错误显示“QObject::connect:没有这样的信号QPushButton::doubleClicked()”

我最初选择了QPushButton,但出于我的目的,如果可以产生doubleclick事件,则可以建议更改为其他对象。不一定是按钮。

谢谢Qt和C++的大师。

最佳答案

一个简单的解决方案是创建我们自己的窗口小部件,以便我们覆盖mouseDoubleClickEvent方法,并且您可以覆盖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 Designer一起使用,可以进行升级,如以下 link 所示。
然后连接:
//new style
connect(ui->widget, &DoubleClickedWidget::doubleClicked, this, &MainWindow::onDoubleClicked);
//old style
connect(ui->widget, SIGNAL(doubleClicked), this, SLOT(onDoubleClicked));
在下面的link中,有一个示例。

关于c++ - 带有双击的QWidget,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47383722/

10-11 22:41
查看更多