问题标签 [qt-connection]
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.
qt - 我的信号/插槽连接不起作用
我反复看到人们在没有调用插槽时遇到问题。我想收集一些最常见的原因。所以也许我可以帮助人们并避免很多多余的问题。
信号/插槽连接不起作用的原因是什么?如何避免此类问题?
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();
c++ - Qt - 使用 lambda 函数修改先前连接信号的插槽参数
我正在尝试将信号重新连接到同一个插槽但使用不同的参数。如果我只想在不使用参数或 lambda 函数的情况下将相同的信号重新连接到不同的插槽,这将起作用,但我需要这样做。
起初我尝试过这样的事情:
function1
收到varA
并且从不varB
。
我通过保留连接列表找到了一种方法,当我想修改参数时,我只需断开旧连接并建立新连接。
我想知道的是,是否有一种方法可以进行此修改,而无需跟踪所有连接并完成disconnect/connect 过程。
qt - No such slot when connecting widget signal with parent widget slot
I have the following classes:
and
in the method initConnections, I want the widget to init the signal-slot connections like so:
Importer is a QGroupBox and a base class for derived sub classes specifying concrete data importer types. It works like so: If I press a button, an DataImporterWidget is created and added to a QMdiArea as a QMdiSubWindow. When creating the DataImporterWidget I call the initConnections() method which sets up the signal-slot connections.
Now, when I run the program, I get the following message:
I do not understand why I get it because the slot is there. Even if I cast the parentWidget to the MainWindow, I get the same error.
PluginWidget is just a base class deriving from QWidget that holds some common functionality for my used plugins. I put Q_OBJECT on each base and derived class but still get this error. However, if I set up the connections in the MainWindow, it works just fine, but I wonder why the above solution won't work.
c++ - Qt::DirectConnection 在多线程环境中的作用如何?
虽然Qt::QueuedConnection
or Qt::AutoConnection
(在某些情况下)在多线程环境中是首选,但我问这个问题是为了我的理解目的。
如果
MySignal()
在线程 A 中发出信号并且插槽MySlot()
属于线程 B 的对象。两者都通过 连接Qt::DirectConnection
,执行如何发生?即如果线程 A 向线程 B 发送信号,而线程 B 正在执行某个函数的中间foo()
。MySlot()
将在完成后立即调用插槽foo()
还是将其并行调用foo()
?在多线程应用程序中是否存在
Qt::DirectConnection
比其他应用程序更理想的情况?
c++ - 如何将 std::function 或函数指针传递给 qtconnect?
这主要是为了清理我的构造函数中的一堆代码。仅在构造函数中我就有大约 20 多行,connect(object, func1, this, func2)
我正在尝试通过使用std::vector<std::tuple<QObject*,std::function<void()>,std::function<void>>>> connections;
如果我能做这样的事情,效果会很好:
然后这样称呼它:
但是,当我这样做时,我收到一个错误,即存在替换失败并且 astd::function<void()>
无法转换为函数指针。所以决定改变它并创建实际的函数指针,如下所示:
同样的事情,然后我尝试调用它:
但是,这也会在没有转换的情况下提供类似的错误。这没有任何意义,因为现在我实际上正在使用函数指针。根据连接文档,它应该能够使用函数指针来连接它们。所以要么我错误地传递它。或者我想要达到的目标是不可能的。
任何帮助,将不胜感激!
qt - 如何从 qt 中的按键事件调用定义的插槽/如何将按键事件与 gui 上的 QPushbutton 连接?
我是qt的初学者。我正在开发计算器 gui 应用程序,当按下计算器上的任何数字按钮时,我已经定义了像 numPressed() 这样的插槽,它将显示在 lineEdit 上。
这里 add_button 是 UI 上的 QPushbutton 名称。
我想要达到的是什么?
当在键盘上按下数字键时,我想连接按下的数字和计算器上的数字按钮,用我在键盘上按下的数字填充 lineEdit?
PS:我想将键盘上按下的数字连接到按钮上的数字。
c++ - 我不能使用来自 QMainWindow 的指针作为 QT5 的连接参数
此代码创建一个线程并将其连接到MainWindow
in QT
。
->connect
由于mainWindow
参数,此代码部分给出错误。
如果我在MainWindow
类中运行这段代码,它会是这样的。它会正常工作,但正如你所看到的,mainWindow
这就是问题所在。
mainWindow
那么,如果我有一个看起来像这样的构造函数,为什么会出现问题
我在类中调用UI_handling
构造函数MainWindow
那么为什么这个论点this
,导致我没有得到正确的论点呢?
错误是:
最小的例子:
首先你创建线程头
然后你创建线程源
然后你创建UI_handler
类
并且你在源文件中实现了 counstructor 和函数。
然后最后你在你的MainWindow
构造函数中实现这个
类的头文件是MainWindow
这样的