gpt4 book ai didi

qt - onClicked 和 onDoubleClicked 都发生在 QML 中

转载 作者:行者123 更新时间:2023-12-04 14:11:05 25 4
gpt4 key购买 nike

我已添加 onClickonDoubleClick QML 中项目的处理程序,但是当我双击该区域时,这两个事件都会被执行。我不知道它是否与检查点击是否由鼠标右键生成有关。此外,放置代码的顺序不会影响问题。

MouseArea {
id: idModuleMouseDebug;
parent: repeaterDelegate;
anchors.fill: parent;
acceptedButtons: Qt.LeftButton | Qt.RightButton

onDoubleClicked: {
if(mouse.button == Qt.RightButton) {

console.log("Double Click");
}
}

onClicked: {
if(mouse.button == Qt.RightButton) {
console.log("Single Click");
}
}
}

最佳答案

正如@cdonts 所说,这也是小部件世界中的预期行为:

#include <QtWidgets>

class Widget : public QWidget
{
public:
Widget() {}

protected:
void mousePressEvent(QMouseEvent *) {
qDebug() << "press";
}

void mouseReleaseEvent(QMouseEvent *) {
qDebug() << "release";
}

void mouseDoubleClickEvent(QMouseEvent *) {
qDebug() << "double click";
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}

输出:
press
release
double click
release

想想您的预期行为将如何实现。如果最终是双击,为了不发出单击,您需要推迟发出单击,直到双击延迟/阈值过去,如果没有第二次单击,您必须人为延迟发送单击事件。这将是一团糟。

关于qt - onClicked 和 onDoubleClicked 都发生在 QML 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32640625/

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