gpt4 book ai didi

c++ - Qt延迟处理mousePressEvent

转载 作者:行者123 更新时间:2023-11-28 02:02:53 27 4
gpt4 key购买 nike

我有一个自定义按钮,除了左键单击外还可以右键单击。它是这样工作的:

private slots:
void mousePressEvent(QMouseEvent *e) {
if(e->button() == Qt::RightButton) {
std::cout << "kek2";
emit rightClicked();
}
QPushButton::mousePressEvent(e);
}

由于某些奇怪的原因,左键单击工作正常,并且在我执行左键单击之前不处理右键单击(根据缺少 kek2 输出判断),此时所有右键单击都会立即处理。为什么?

最佳答案

我看了一下它并实现了一个等效的 Button 并将您的代码更改为:

void QRightClickButton::mousePressEvent(QMouseEvent *e)
{
if(e->button() == Qt::RightButton) {
std::cout << "kek2" << std::endl; //the << std::endl; //made it work good again
emit rightClicked();
} else if(e->button() == Qt::LeftButton) {
//this else if block is just a fast implementation of the leftclick
std::cout << "kek3" << std::endl;
QPushButton::mousePressEvent(e);
}


}

自己尝试一下,两条日志消息(“kek2”和“kek3”)都会立即出现。没有 << std::endl;它仍然有问题!

编辑:我决定再添加 2 种方法!

  1. 你也可以在没有 std::endl; 的情况下使用它

    std::cout << message; //prints message

    std::cout.flush(); //flushes the output so it will be visible as well

例如,您可以创建自己的类或函数。

  1. 使用qDebug() . qDebug 自动刷新流,因此您不必编写额外的代码,因为它属于 Qt self。这意味着您不会混合使用 2 个库。

这样使用:

qDebug() << message;

关于c++ - Qt延迟处理mousePressEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38667051/

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