问题标签 [qt-events]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
308 浏览

c++ - 在 QStackedWidget 项中通过键盘导航

我正在尝试QStackedWidget使用KeyPressEvent. 但我做不到。我们应该使用什么信号功能keyPressEvent

我的代码:

0 投票
2 回答
1116 浏览

c++ - 在 qt 中显示 QStackedWidget 项的延迟

我正在使用 QStackedWidget 项目。但是第一次需要时间,一段时间后它可以正常工作。

0 投票
1 回答
1513 浏览

c++ - Propagate QML events to C++

I would like to propagate event from a QML signal handler to C++ procedure but don't know how to pass the "event object". Take a look at this situation and pay particular attention to SomeType.

First I create a custom QML item with a slot that can be called from QML:

Then, in QML, I create a MouseArea and an instance of my custom object to which I wanto to propagate events to.

And there is the problem. I don't know how to assemble an instance of SomeType to pass to the method. Actually I don't know what should I choose as SomeType. Ideally this would be QQuickMouseEvent so i could just call tool.onMousePositionChanged(mouse), but for some reason this type is not available for use in C++ code.

I've also considered QMouseEvent so I would just have to rewrite the properties, but this class in turn seems to be unavailable to QML code.

I'm new to Qt Quick so maybe I'm misusing it altogether. What I want to achieve is to have this base Tool class that has those virtual event handlers for mouse and keyboard and then create a collection of different tools that override them as necessary. They are to be displayed in some kind of toolbox, i.e. a grid with icons, from which the user can choose the current tool. The chosen tool is the one that receives the events. Any design suggestions are welcome.

0 投票
2 回答
1208 浏览

c++ - Qt:在孩子之前捕获事件

我有stackedWidget,我想捕获他孩子的所有mouseClickEvents,独立于他们的类型。它们可以在以后添加和删除(从stackedWidget中删除,而不是删除)。我怎样才能使这项工作?

0 投票
1 回答
110 浏览

c++ - 如何在构造函数完成后立即销毁从 QWindow 对象派生的对象?

如果构造函数中的某些条件为真,我需要QWindow在构造函数完成后立即销毁从对象派生的对象。

我想在构造函数中设置成员变量并检查窗口初始化函数。但我不知道哪个功能或信号适合这个。

0 投票
0 回答
1466 浏览

c++ - 为什么我的 Qt eventFilter 没有拾取鼠标事件?

我基本上有这段代码来拦截某些QTreeWidget事件。

当我在 中单击并移动时QTreeWidget,事件处理程序会打印出e->type()许多事件,但不会打印鼠标事件。鼠标事件似乎永远不会发生(除了Leave)。

为什么会这样?如果至少有一个按钮被按下,即使鼠标跟踪关闭,我也应该得到移动事件,无论如何我都应该得到按下和释放事件。本身行为正常,QTreeWidget就好像没有安装事件处理程序一样。

0 投票
0 回答
4143 浏览

qt - qt鼠标事件过滤器

我有一个带有 QGraphicsView 和一个按钮的 QWidget。QGraphicsView 必须采用鼠标按下和释放事件来检测滑动。同时,按钮应该在单击时运行一个小功能。我在 QWidget 中使用了一个事件过滤器来检测鼠标事件。

在 Widget 类的构造函数中,我有以下内容

问题是按钮被单击,但设置“swipe_endPoint”值的 MouseButtonRelease 事件不起作用。

当我设置

鼠标按下和释放事件工作正常,但按钮停止接受事件。

我尝试过的其他事情是:-

将事件过滤器设置为视口

请帮我让这个鼠标事件正常工作。提前致谢。

注意:在 Ubuntu 中使用 QT 5.6.0

0 投票
1 回答
68 浏览

c++ - 为什么多个小部件接收事件需要布局?

我实际上是在 qt( container) 中编写一个模块 inerhit from QWidget,其中包含多个plots ,这些 s 表示graph所有它们都 inerhit from QWidget

所以给出了:

  • 1container可以有:
    • n plots 其中每个包含
    • 1 graph.

昨天我花了很多时间来找出一个错误。碰巧只有 n plot(出于调试目的)在其构造函数中添加到容器中以捕获绘制事件。

plot在 s 已经构建时通过相同方法添加的所有scontainer都无法接收任何事件。

后来,在我请求帮助后,一位同事向我解释说,我的container(位于mainwindow-form 中)需要在 Qtdesigner 中分配一个布局。我试了一下,很惊讶它确实解决了我的问题。在将动态生成plot的 s添加到 scontainer并将它们添加到布局后,所有小部件都按预期接收事件。

但由于我无法理解他的解释,也不想再打扰他,所以我在这里问。

那么,为什么作为其他动态生成的 QWidgets 的子对象的动态生成的小部件需要作为子对象的父级mainwindow来分配布局呢?如果这不仅仅是一个例外情况,为什么默认情况下没有分配它,而且我无法在网上找到有此类问题的案例?

0 投票
1 回答
1118 浏览

qt - 如何在不损害性能的情况下直接跳转 QSlider

我现在正在 QT 中创建一个简单的视频播放器。

我创建了一个与连接到多媒体播放器(他负责来回播放电影)连接的滑块,我希望通过鼠标单击幻灯片上的任意位置来移动它,而不仅仅是拖动光标。

我试图通过添加我自己的方法来做到这一点,如下所示:

这是我将幻灯片连接到播放器的方式:

我的问题是现在播放电影时会有延迟(电影每隔几秒钟就会挂起几秒钟)。在我看来,由于这个添加,我实际上给玩家施加了更大的压力,因为他现在添加了要监听和发送的事件。

如何让滑块以不会损害播放器性能的方式移动?(或将性能下降降至最低)

谢谢洋子

ps

问题的中心是我connect(player, &QMediaPlayer::positionChanged,pos_slider, &MySlider::setValue );在媒体播放器中使用,而且connect(pos_slider, &MySlider::valueChanged ,player, &QMediaPlayer::setPosition );这种重复导致性能问题,但我不知道如何摆脱这种重复

0 投票
1 回答
463 浏览

qt - Qt QTreeView鼠标进入/离开事件?

QTreeView Widget 有一个“输入”信号,我可以用它来检查我的鼠标是否移到一个项目上。

有没有办法实现“左”信号?

原因:我有一个包含很多项目的 treeView,我也通过 QChart 绘制这些项目。当有人将鼠标悬停在树视图中的数据上时,我想突出显示该图。我可以通过“输入”信号突出显示它,但是如果鼠标左/鼠标在另一个项目上,我不知道如何将其更改回默认值......