是否可以在没有接收器实例的情况下将信号连接到静态插槽?

2024-04-09

是否可以在没有接收器实例的情况下将信号连接到静态插槽?

像这样:connect(&object, SIGNAL(some()), STATIC_SLOT(staticFooMember()));

有一个QApplication::closeAllWindows()Qt 文档中具有 [static slot] 属性的函数。文档中有一个使用它的示例:

exitAct = new QAction(tr("E&xit"), this);
exitAct->setShortcuts(QKeySequence::Quit);
exitAct->setStatusTip(tr("Exit the application"));
connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));

是否允许执行相同的操作但不传递实例变量(例如,当类只有静态函数时)?

class Some : public QObject {
    Q_OBJECT
public slots:
    static void foo();
private:
    Some();
};

也许 Frank Osterfeld 是对的,在这种情况下最好使用单例模式,但我仍然很惊讶为什么这个功能还没有实现。

Update:

在 Qt 5 中可以 http://woboq.com/blog/new-signals-slots-syntax-in-qt5.html.


QT5 更新:是的,可以

static void someFunction() {
    qDebug() << "pressed";
}
// ... somewhere else
QObject::connect(button, &QPushButton::clicked, someFunction);

在 QT4 中你不能:

不,这是不允许的。相反,允许使用静态函数插槽,但为了能够连接它,您需要一个实例。

在他们的例子中,

connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));

意味着比他们以前所谓的

QApplication* qApp = QApplication::instance();

Edit:

连接对象的唯一接口是函数

bool QObject::connect ( const QObject * sender, const QMetaMethod & signal, const QObject * receiver, const QMetaMethod & method, Qt::ConnectionType type = Qt::AutoConnection )

你要如何摆脱const QObject * receiver?

检查moc项目中的文件,它自己说话。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在没有接收器实例的情况下将信号连接到静态插槽? 的相关文章

  • 有没有快速创建集合的方法?

    目前我正在创建一个像这样的新集 std set a s s insert a1 s insert a2 s insert a3 s insert a10 有没有办法创建s在一行 int myints 10 20 30 40 50 std s
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • 如何在 C# 控制台应用程序中将修饰符(ctrl、alt、shift)按键捕获为单个按键?

    Console ReadKey 仅在按下 正常 键时捕获输入 然后将修饰符 如果有 附加为键信息的一部分 如何将单个修饰键注册为输入 提供了一种解决方案这个链接 https blogs msdn microsoft com toub 200
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • 运行选定的代码生成器时出错:“未将对象引用设置到对象的实例。”错误?

    我已经尝试了所有解决方案 例如修复 VS 2013 但没有用 当您通过右键单击控制器文件夹来创建控制器并添加控制器时 然后右键单击新创建的控制器的操作并选择添加视图 当我尝试创建视图时 就会发生这种情况 它不是一个新项目 而是一个现有项目
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用

随机推荐

  • 通过javascript设置iframe的useragent

    试图满足的业务需求 在 iframe 中加载现有页面 模拟 iPhone 用户代理 这需要在客户端发生的原因是 有客户端脚本它检测用户代理并将一些类附加到 html 元素上 基于此 站点的样式将发生根本性的变化 因为 CSS 的目标元素是基
  • DBMS_RANDOM 被认为是危险的吗?

    我们的数据库团队希望从 PUBLIC 撤销 DBMS RANDOM 上的执行 以解决安全问题 如果你用谷歌搜索它 一些安全专家会认为这个包很危险 但没有说出原因 Ingram 和 Shaul 的书 Practical Oracle Secu
  • Android 4.4.4 上的改造 SSL 错误

    我们有一个现有的 Android 应用程序 它使用 Retrofit 连接到服务器并发送和接收 JSON 自从将我的设备更新到 Android 4 4 4 后 我在尝试连接时收到以下错误 D Retrofit 8004 javax net
  • Android Volley ECONNRESET

    我尝试使用Volley库并将图像上传到服务器 该库应该在独立模式下执行此过程 但出现以下错误消息 java net SocketException 发送失败 ECONNRESET 连接重置 由同行 是否可能是服务器端配置错误 我尝试上传一个
  • 不需要时禁用 R Shiny 中的 selectInput

    我正在构建一个shiny网页由两个表单组成selectInput 第一个 静态 在ui部分和第二部分 动态 在server部分 实际问题的简化如下所示 require shiny ui lt fluidPage The static inp
  • 防止“删除和更新”firebase中的子项

    我发现没有办法设置安全规则来防止孩子的 删除和更新 write data exists newData exists newData exists 那没有道理 为了便于将来参考 Firebase 控制台允许您测试数据库安全规则 以便您可以在
  • EF 7 迁移到现有数据库

    我正在使用 ASP Net 5 和 EF7 开发一个 Web 项目 我已将现有数据库中的所有表导入到项目中的模型中 但是 我在迁移方面遇到了问题 我已经创建了初始迁移 对特定实体进行了一些更改 在所做的更改之后创建了另一个迁移 现在想要在数
  • 快速排序可以在没有堆栈和递归的情况下用C实现吗?

    我找到了这个帖子如何在c中不使用堆栈进行迭代快速排序 https stackoverflow com questions 32388760 how to do iterative quicksort without using stack
  • 如何在powershell中获取对象属性的名称?

    我知道我可以使用 get member 来获取对象的所有属性 但我正在浏览对象列表 并且我对名称不断变化的最后一个属性感兴趣 为了自动化我的脚本 我试图获取最后一个属性的名称 但我不确定如何获取 假设我有 result get member
  • 如何在php脚本中加载Wordpress环境?

    如何在脚本中加载Wordpress环境 以便使用Wordpress的功能 我需要这个 因为我需要从异步执行的脚本中调用多个函数 您需要加载 wp load php 文件 然后该文件将允许您调用 WordPress 函数 例如 require
  • 安装和配置 xvfb

    我正在尝试找到兼容的 Ubuntu 操作系统 xorg 版本和 xvfb 版本 任何人都可以帮我指导安装 xvfb 而不需要挂断吗 初始化内置扩展 GLX 到目前为止我已经尝试过以下方法 Ubuntu 13 Server No graphi
  • 枚举在类体之外但在命名空间内的定义

    今天 我遇到了一些类似这样的代码 namespace Foo public enum Game High Low public enum Switch On Off public class Bar Blah 我无法弄清楚这与在类中声明枚举
  • 如何释放切片分配的内存? [复制]

    这个问题在这里已经有答案了 package main import fmt time func main storage string for i 0 i lt 50000000 i storage append storage strin
  • 在 Eclipse 中复制并粘贴会在每个粘贴行的末尾添加窗口换行符

    我在 Mac OS X 10 7 上使用 Eclipse 版本 Indigo Service Release 2 以及 PHP 开发工具和 Aptana Studio 3 插件 在 首选项 gt 常规 gt 工作区 中 我选择了 文本文件编
  • GTK 中的延迟加载列表视图#

    我希望通过 GTK 中的列表视图显示大型数据集 而性能是这里的一个问题 我目前正在使用由 ListStore 支持的 TreeView 但将所有数据添加到 ListStore 需要很长时间 GTK 中是否有某种支持延迟加载数据的列表视图小部
  • 使用 win32 从 Python 中的 Outlook Exchange 中提取发件人的电子邮件地址

    我正在尝试使用 python 中的 win32 包从 Outlook 2013 中提取发件人的电子邮件地址 我的收件箱中有两种电子邮件地址类型 exchange 和 smtp 如果我尝试打印 Exchange 类型的发件人电子邮件地址 我会
  • 在gradle依赖中指定ivy配置

    我想解决 ivy 存储库的依赖关系 但我不知道如何为其指定 ivy 配置 我发现我应该这样做 myconf group com eu module MyModule version 1 0 0 configuration ivyconf 但
  • 如何在 Jira 中存档项目,以便它们从项目选择器中消失

    我们在 Jira Studio 中有一堆旧项目 我们希望保持在线状态 以防万一 如果我们出于某种原因需要返回它们 但我不希望它们出现在我们日常 Jira 使用中的任何地方 即仪表板 项目选择器等 我按照官方指示进行操作here http c
  • 算法:求给定范围内的数字个数

    给定一个可能存在重复项的未排序数字数组 对数组进行预处理 以便找到给定范围内的数字个数 时间为 O 1 例如 7 2 3 2 4 1 4 6 两者的数字计数 gt 2 and lt 5 is 5 2 2 3 4 4 对数组进行排序 对于已排
  • 是否可以在没有接收器实例的情况下将信号连接到静态插槽?

    是否可以在没有接收器实例的情况下将信号连接到静态插槽 像这样 connect object SIGNAL some STATIC SLOT staticFooMember 有一个QApplication closeAllWindows Qt