问题标签 [qt-slot]

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 投票
6 回答
78784 浏览

qt - 将参数传递给插槽

我想用一堆 QActions 和 QMenus 覆盖 mouseReleaseEvent ......

所以我想向插槽传递一个参数onStepIncreased(你可以想象它们是 1、5、10、25、50)。你知道我该怎么做吗?

0 投票
1 回答
31961 浏览

c++ - 使用 Q_INVOKABLE 将 C++ 与 QML 连接起来

我有一个 Qt 函数:

我从 QML 收集数据,我想将数据传递给 Qt 中的这个函数。所以我知道我需要使用Q_INVOKABLE但不知道如何使用它。

还有一件事是在调用上述某些函数时可以调用其他函数。
例如:我调用了上面的函数,但在她的身体里我调用了refresh()函数。这可能吗?

0 投票
3 回答
21973 浏览

qt - 我的信号/插槽连接不起作用

我反复看到人们在没有调用插槽时遇到问题。我想收集一些最常见的原因。所以也许我可以帮助人们并避免很多多余的问题。

信号/插槽连接不起作用的原因是什么?如何避免此类问题?

0 投票
3 回答
5139 浏览

c++ - QLineEdit editingFinished 信号在改变焦点时两次?

我发现了一些类似的问题,但这些似乎是指在插槽处理程序中使用消息框的情况。就我而言,我有点卡住了,因为即使我的插槽处理程序什么都不做,我也收到了两次 editFinished 信号。

对于测试,我有一个 QLineEdit 数组,它使用 signalMapper 将 editingFinished() 信号连接到单个插槽。signalMapper 传递数组索引,因此我可以看到信号的来源。例如:

在调试器中运行时,如果我将数据输入到一个框中,然后按回车键或用鼠标选择另一个框(即更改焦点),然后它调用 data_entry 两次,第一次是失去焦点的框的索引和第二次使用获得焦点的框。

所以我的问题是:我错过了什么吗?这是预期的行为还是错误?如果是错误,任何人都知道解决方法,因为我想在输入数据时使用此信号对数据进行自定义验证(通过返回、制表符或鼠标单击来更改焦点)。

0 投票
3 回答
1663 浏览

qt - Qt:如何通过像函数一样调用信号来知道信号槽机制是否调用了槽

在一个插槽内,我检查了QObject::sender()但现在我想像函数一样直接调用这个插槽。

我可以知道这个插槽是如何在插槽内部调用的吗?是通过信号槽机制还是简单地像函数一样调用槽?

0 投票
1 回答
2532 浏览

qt - QT Connect QNetworkReply SIGNAL finished() 未触发

我看了一下这个链接,除了信号间谍和调试之外,我至少尝试了一切。我从这个网站上举了一个例子。我暂时还没有设置调试器。

我的问题是我想触发一个自定义插槽并且什么都没有发生。我尝试了 qmake 并重建了项目,但结果是一样的。我在 Windows10 机器上使用带有 QT 5.7 msvc2015_64 的 QTCreator 作为套件。我没有收到任何应该用于测试功能的未引用警告(*reply not used)。这个问题的根源可能是什么?
我的完成信号有问题吗?

从程序的流程中,我假设它是以下内容:
我创建了一个指向QNetworkAccessManager名为 manager 的类的实例的新指针。然后我将管理器对象的信号连接finished到对象管理器的自定义插槽test(QNetworkReply*)。现在每次发出来自对象管理器的信号时,都应该执行finished来自对象管理器的函数。 从文档中,我假设当调用这个函数时会返回一个新对象,并且当这个对象完成处理时会发出信号。我必须以其他方式连接我的信号和插槽吗? test
QNetworReply *QNetworkAccessManager::get(QNetworkRequest(QUrl))QNetworkReply*finished

我试图声明QNetworkReply reply* = manager->get....connect(reply, SIGNAL(finished()),this,SLOT(test()));但在这里我的应用程序崩溃了。

当我设置wireshark和过滤器:http包含“ http://www.theuselessweb.com ”没有弹出。

switchwebpanel.h

switchwebpanel.cpp

我得到以下输出:

我的 Main.cpp 调用:switch_panel panel; panel.doDownload();

0 投票
0 回答
652 浏览

c++ - 在 Qt 上将信号和数据从一个类传递到另一个类

我将首先发布代码,因为之后它会更容易理解。

基本上,我有一个默认类 MainWindow:

主窗口.h

主窗口.cpp

后面是一个带有pushButtontextBox的简单表单。

第二类:

tcpsocket.h

tcpsocket.cpp

Bsically,我想将一些数据从类 tcpsocket 传递 MainWindow

main.cpp是默认代码。我认为这无关紧要。

更具体地说,我希望来自tcpsocket 类的信号触发来自MainWindow 类的插槽:

第二个问题是如何将一些数据从tcpsocket 类传递给MainWindow 类

应用程序运行完美,内容被获取。但我只能使用 qDebug(); 查看获取的内容;所以我想将对 GUI 的响应传递给一个文本框。

0 投票
1 回答
11493 浏览

c++ - 'QML 连接:无法分配给不存在的属性',尽管事实相反

因此,我检查了以下问题,这些问题似乎与我现有的问题最相似:

QML:在 QML 中使用 cpp 信号总是导致“无法分配给不存在的属性”

不幸的是,这并没有帮助。(我在 stackoverflow/google/qt 论坛等上也找不到任何其他解决方案)

我不断收到以下两个错误:

qrc:/view.qml:30:9:QML 连接:无法分配给不存在的属性“onNewFrameReceived” qrc:/view.qml:31:ReferenceError:未定义 imageProvide

这是我的代码(经过编辑使其成为“最小工作示例”)。

唯一重要的文件应该是:

  1. 主文件
  2. 视图.qml
  3. imageprovidervm.cpp
  4. imageprovidervm.h

我包含了imagesource类,只是为了完整,以防有人也想自己编译它。

Q1。所以,我不明白为什么即使在main.cpp中设置了 context 属性,也会出现以下错误。

qrc:/view.qml:31: ReferenceError: imageProvide 未定义

有趣的是,智能感知/自动完成似乎完全正确地检测到了 imageProvide。

Q2。即使在我的imageprovider.h中,我添加了应该在 qml 文件中看到的属性 (newimage) 和信号 (newFrameReceived),但我仍然收到以下错误。此外,Qt 智能感知/自动完成无法在此处显示我定义的信号 (onNewFrameReceived)。

qrc:/view.qml:30:9:QML 连接:无法分配给不存在的属性“onNewFrameReceived”

  • 附加信息:在第 31 行的 qml 文件中的断点处调试和停止,在 qtcreator 的“局部变量和表达式”中显示我这里只有 2 个可用信号,即“ objectNameChanged ”和“ targetChanged ”。为什么 ???

主文件

视图.qml

imageprovidervm.h

imageprovidervm.cpp

图像源.h

图像源.cpp

这是 CMake 文件:

0 投票
1 回答
278 浏览

c++ - 执行我的应用程序时出现警告消息“没有匹配的信号”

执行我的应用程序时会出现一些警告消息:
QMetaObject::connectSlotsByName: No matching signal for on_actionUndo_triggered(), QMetaObject::connectSlotsByName: No matching signal for on_actionRedo_triggered()

我已经对我创建的信号和插槽实施了规则void on_objectName_signalName(signalParameters);,但我不知道为什么会出现这些消息,请注意信号和插槽工作正常。

宣言:

定义:

0 投票
1 回答
426 浏览

c++ - QT 信号和插槽不工作并给出错误消息

我是 Qt 的新手,正在尝试编写信号和插槽。下面是我试图运行的代码。在“连接”功能上使用 SLOT 和 SIGNAL 关键字,它工作正常。但我不想在连接函数上使用 SIGNAL 和 SLOT 关键字,而是想使用不同的方法。

在上面的代码中,未注释的连接函数工作正常,但注释的连接函数不起作用。我收到错误“没有匹配的函数来调用 MyWindow::connect”。不知道我在这里犯了什么错误。我从 qt 关注这篇文章。

http://doc.qt.io/qt-5/qtopengl-hellogl2-window-cpp.html