问题标签 [qt-signals]

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 回答
359 浏览

c++ - Qt、多重继承、包装器或事件过滤器

我有几个不同的基于 QGlWidget 的显示小部件,我需要将它们嵌入到基于 MDI 或 QDockwidget 的应用程序中。但我需要在我的显示小部件中处理一些 MDI/Dock 特定事件(最小化/停靠等)

选项是:
乘以从 QGlWidget 和 QMdiSubWindow/QDockWidget 继承显示小部件。多重继承和信号/插槽有任何问题吗?

将显示器封装在 QMdiSubWindow/QDock 派生的小部件中,但随后我必须将显示器的所有外部函数包装在 Mdi/Dock 包装器小部件中。

当我创建一个新窗口时,创建一个临时 Mdi/Dock 小部件,将所有特殊信号连接到显示器中的插槽,然后将显示器连接到它并显示它。但这不适用于事件。

一些 QSignalMapper 魔术,我可以在 QGlWidget 中接收 QMdiSubWindow/QDockWidget 特定信号

0 投票
1 回答
21721 浏览

qt - 当一个类被删除时,Qt中的信号是否会自动断开

Qt 是否自动删除对象之间的连接,当一侧被删除时?

例如connect (A .. , B ..),当A(指针)被删除或B被删除时,连接是否会断开?

是否有必要在析构函数中显式使用断开连接?

0 投票
1 回答
1798 浏览

qt - QTableWidget cellClicked 信号不起作用

我的应用程序中有一个 QTableWidget,并且我已将 cellClicked(int,int) 信号连接到一个插槽。但是当单击单元格时,插槽中的这段代码根本不会被调用。请让我知道如何解决这个问题。这是我的代码:

谢谢,拉克什。

0 投票
1 回答
2673 浏览

qt - Qt:信号的返回值有效,为什么官方文档说它是不可能/禁止的?

Qt 文档说,信号的返回值是不可能的:

信号由 moc 自动生成,不得在 .cpp 文件中实现。它们永远不能有返回类型(即使用 void)。

相关的SO问题:

  1. Qt 信号可以返回一个值吗?
  2. Qt:槽返回值的含义?

但是,从我的试验(Qt 4.8.1)我可以看出返回值确实有效:

  1. 如果信号/槽在同一个线程中,ConnectionType 可能是Qt::AutoConnection
  2. 在不同线程中使用信号/插槽我需要使用 Qt::BlockingQueuedConnection

所以在我的代码中,我调用了一个信号

并且信号 moc 返回 a QString

这是它传回的插槽 mocQString

所有这些似乎都非常简单,那么为什么会与文档相矛盾呢?使用返回值的问题在哪里?如前所述,在我的代码中这似乎有效。

0 投票
1 回答
359 浏览

c++ - Object::connect: 当obj作为shared_ptr返回时没有这样的信号

使用 Qt 的信号和插槽,我得到错误:

connect的其他工作正常,我已经检查了我能想到的所有内容(也提到了调试 Qt 信号和插槽的 20 种方法)。因为我个人是第一次使用shared_ptrforQt这个示例,我怀疑我的使用方式可能有问题shared_ptr。我非常感谢您的意见。


具体FvOverlay.cpp


此覆盖在此实例化:abstractFvOverlay.cpp


覆盖.h

为了您的兴趣,我shared_ptr在这里使用的原因是我想做基于接口的编程(不确定这是否是调用这种风格的官方方式,但我的意思是定义抽象类中的行为,并且只针对我描述它们的某些行为Java 允许的具体类)。

0 投票
1 回答
263 浏览

c++ - 带有新信号的 QEditLine 子类

我正在尝试继承 QEditLine 以便我可以定义一个发送对象标识符的新信号。目前,我将一个父信号连接到新类中的一个插槽,并从该插槽发出一个带有附加对象标识符的适当新信号。我无法理解一件事。问题是我不知道如何定义一个新的信号函数本身。我不知道我应该放什么。我的意思是我知道它的论点,但我不知道它作为一个函数应该做什么。我是第一次这样做,它可能看起来很傻;p 但我真的卡在那里>.<。任何人都可以提供一些线索。这可能是一个非常简单的问题。

谢谢

0 投票
1 回答
530 浏览

qt - 形状改变对话框

我试图使用形状更改对话框,即,当我单击按钮时,对话框的大小应该变大,并带有额外的细节。为此,我在按钮上编写了以下代码:

但我的对话框没有发生任何变化。在这种情况下我该怎么办。

我通过使用 hide() 函数将它们放置在网格中来隐藏额外的细节。额外的细节被隐藏了,但小部件的大小没有改变。

请帮我解决

0 投票
2 回答
1151 浏览

qt - QML 信号执行两次

我是 QML 和 QML 信号的新手,我遇到了这个我自己无法解决的愚蠢问题。我正在触发一个onTouch信号并执行了两次,产生了双重响应,导致我的应用程序崩溃。

这是我的 QML 代码:

//LabelKey.qml

我有这个TextField,它的 idtextFieldKey在另一个 QML 中,其中包括我在上面发布的那个。主要思想很简单,是一个键盘,其中每个键都是上面代码的一个组件,它必须打印在 this 中按下的键的值TextField

问题是,正如我所说,信号被调用了两次,TextField每次都用两个字符填充值。

请帮助我,我不知道我是否以正确的方式使用信号或类似的东西遗漏了一些东西。

谢谢!

0 投票
1 回答
1432 浏览

c++ - (Qt)如何检查 QTextEdit 小部件文本是否从 QTabWidget 更改

我有一个由管理QTextEdit小部件的QMainWindow作为父级的QTabWidget

我想知道何时在一个选项卡中更改了内容并知道是哪一个。我一直在尝试用谷歌搜索一个解决方案,但是在我的代码和我的类的体系结构发生了许多更改之后。

我最后一次尝试是:

但是永远不会调用插槽“marquerChangement()”。有任何想法吗?

0 投票
3 回答
2077 浏览

c++ - 如果子进程崩溃,是否会发出 QProcess::finished?

文档说,error()如果子进程崩溃,将发出信号,但也会finished()发出信号,还是仅在成功退出时发出?