gpt4 book ai didi

c++ - 双击QWidget

转载 作者:行者123 更新时间:2023-11-30 03:27:25 33 4
gpt4 key购买 nike

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

我尝试过的:

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

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

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

感谢 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com