问题标签 [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.

0 投票
3 回答
21973 浏览

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

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

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

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 投票
2 回答
246 浏览

c++ - Qt - 使用 lambda 函数修改先前连接信号的插槽参数

我正在尝试将信号重新连接到同一个插槽但使用不同的参数。如果我只想在不使用参数或 lambda 函数的情况下将相同的信号重新连接到不同的插槽,这将起作用,但我需要这样做。

起初我尝试过这样的事情:

function1收到varA并且从不varB

我通过保留连接列表找到了一种方法,当我想修改参数时,我只需断开旧连接并建立新连接。

我想知道的是,是否有一种方法可以进行此修改,而无需跟踪所有连接并完成disconnect/connect 过程。

0 投票
3 回答
269 浏览

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.

0 投票
2 回答
434 浏览

c++ - Qt::DirectConnection 在多线程环境中的作用如何?

虽然Qt::QueuedConnectionor Qt::AutoConnection(在某些情况下)在多线程环境中是首选,但我问这个问题是为了我的理解目的。

  1. 如果MySignal()在线程 A 中发出信号并且插槽MySlot()属于线程 B 的对象。两者都通过 连接Qt::DirectConnection,执行如何发生?即如果线程 A 向线程 B 发送信号,而线程 B 正在执行某个函数的中间foo()MySlot()将在完成后立即调用插槽foo()还是将其并行调用foo()

  2. 在多线程应用程序中是否存在Qt::DirectConnection比其他应用程序更理想的情况?

0 投票
1 回答
62 浏览

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()>无法转换为函数指针。所以决定改变它并创建实际的函数指针,如下所示:

同样的事情,然后我尝试调用它:

但是,这也会在没有转换的情况下提供类似的错误。这没有任何意义,因为现在我实际上正在使用函数指针。根据连接文档,它应该能够使用函数指针来连接它们。所以要么我错误地传递它。或者我想要达到的目标是不可能的。

任何帮助,将不胜感激!

0 投票
1 回答
368 浏览

qt - 如何从 qt 中的按键事件调用定义的插槽/如何将按键事件与 gui 上的 QPushbutton 连接?

我是qt的初学者。我正在开发计算器 gui 应用程序,当按下计算器上的任何数字按钮时,我已经定义了像 numPressed() 这样的插槽,它将显示在 lineEdit 上。

这里 add_button 是 UI 上的 QPushbutton 名称。

我想要达到的是什么?

当在键盘上按下数字键时,我想连接按下的数字和计算器上的数字按钮,用我在键盘上按下的数字填充 lineEdit?

PS:我想将键盘上按下的数字连接到按钮上的数字。

0 投票
1 回答
70 浏览

c++ - 我不能使用来自 QMainWindow 的指针作为 QT5 的连接参数

此代码创建一个线程并将其连接到MainWindowin QT

->connect由于mainWindow参数,此代码部分给出错误。

如果我在MainWindow类中运行这段代码,它会是这样的。它会正常工作,但正如你所看到的,mainWindow这就是问题所在。

mainWindow那么,如果我有一个看起来像这样的构造函数,为什么会出现问题

我在类中调用UI_handling构造函数MainWindow

那么为什么这个论点this,导致我没有得到正确的论点呢?

错误是:

最小的例子:

首先你创建线程头

然后你创建线程源

然后你创建UI_handler

并且你在源文件中实现了 counstructor 和函数。

然后最后你在你的MainWindow构造函数中实现这个

类的头文件是MainWindow这样的