Qt支持虚拟纯插槽吗?

2024-01-09

我的 GUI 项目在Qt有很多“配置页面”类,它们都直接继承自QWidget.

最近,我意识到所有这些类共享 2 个公共槽(loadSettings() and saveSettings()).

对此,我有两个问题:

  • 编写一个中间基抽象类是否有意义(让我们将其命名为BaseConfigurationPage)将这两个插槽作为虚拟纯方法? (每个可能的配置页面会一直有这两种方法,所以我会说“是”)
  • 在我对代码进行重大更改之前(如果必须的话):Qt 是否支持虚拟纯插槽?有什么我应该注意的吗?

这是一个描述一切的代码示例:

class BaseConfigurationPage : public QWidget
{
  // Some constructor and other methods, irrelevant here.

  public slots:

    virtual void loadSettings() = 0;
    virtual void saveSettings() = 0;
};

class GeneralConfigurationPage : public BaseConfigurationPage
{
  // Some constructor and other methods, irrelevant here.

  public slots:

    void loadSettings();
    void saveSettings();
};

是的,就像常规的 C++ 纯虚方法一样。 MOC 生成的代码确实调用了纯虚拟插槽,但这没关系,因为基类无论如何都无法实例化......

同样,就像常规的 c++ 纯虚方法一样,在为方法提供实现之前,无法实例化类。

一件事:在子类中,您实际上不需要将重写方法标记为插槽。首先,它们已经作为基类中的槽实现。其次,您只是为 MOC 和编译器创建了更多工作,因为您添加了(一点点)更多的代码。微不足道,但无论如何。

所以,加油吧..

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

Qt支持虚拟纯插槽吗? 的相关文章

  • 成员字段、构建顺序

    在 C 中 当执行如下所示的操作时 构造顺序是否得到保证 Logger Logger kFilePath logs runtime log logFile kFilePath 是的 施工顺序始终得到保证 但是 不能保证它与对象在初始值设定项
  • 当给定 100k 项时,QListView 需要很长时间才能更新

    我在读取文件时遇到问题 具体是我想制作一本小字典 在我需要阅读的文件中有这样的内容 a Ph P6 a snsr CA a b c fb Dj a b c book i BS A except B gate oOPa y a font kQ
  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • 使用 GCHandle 将大型结构数组从 C# unity 脚本传递到 C++ dll 在 C++ 函数执行后崩溃

    我想从 C unity 脚本将结构数组传递给 c 本机插件 我做了如下操作 我可以访问数据 但我的应用程序在执行 c 函数后崩溃 我不知道为什么 C side StructLayout LayoutKind Sequential publi
  • 何时使用 C++ 私有继承而不是组合?

    你能给我一个具体的例子吗 什么时候使用私有继承优于组合 就我个人而言 我将使用组合而不是私有继承 但在某些情况下 使用私有继承可能是特定问题的最佳解决方案 正在阅读C faq http www parashift com c faq lit
  • 如何检查号码是否只有唯一的数字?

    例如 2345 是唯一的数字 因为没有数字显示两次 但 3324 不是唯一的数字 因为 3 出现了两次 我尝试使用 但我 代码 显示但我没有得到数字我得到了数字 编辑 你不能使用字符串 number 10 number 100 number
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • 如何部署包含第三方 DLL 文件的 C# 应用程序?

    首先 我对部署了解不多 我希望我的问题有意义 我需要将 C 应用程序安装 部署到多个桌面 它需要一个第三方 DLL 文件 一个 C 库 lpsolve55 dll 对于那些感兴趣的人 它是一个免费的 MIP LP 求解器 请参阅 lpsol
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • AcceptSocket 超时?

    是否有可能AcceptSocket on a TcpListener具有超时的对象 以便它偶尔被中断 TcpListener server new TcpListener localIP port server Start while sh
  • PartialView Action 正在调用自身

    我有 MVC 应用程序 它用于从主视图 ProductMaster 将 ProductAreaGrid 列表显示为 PartialView 并且它将在局部视图内将 CreateProductArea 作为 PartialView 我的 Gr
  • 从 Golang 调用 C 函数

    我想在 Golang 中编写控制器逻辑并处理 json 和数据库 同时在 C 中使用我的数学处理模型 在我看来 调用 C 函数的开销必须尽可能低 就像设置寄存器 rcx rdx rsi rdi 一样 执行一些操作fastcall 并获取 r
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • 禁用实体框架的默认值生成(Code First)

    我数据库中有一个列不能为空 我想将其设置为默认值在数据库中 问题是实体框架似乎自己创建了一个默认值 例如 int gt 0 并且完全忽略了数据库中的默认值约束 有没有办法禁用实体框架的默认值 我发现您可以使用以下属性来装饰您的字段 Data
  • 如何使用 C# 将表格粘贴到 Ms-Word 文档的末尾

    我有一个预制的 Word 模板 其中有一个表格 我想打开它 然后在文档末尾添加 粘贴 另一个表格 问题是它不会转到文档的末尾 而是将新表格粘贴到原始表格的第一个单元格中 任何帮助将不胜感激 previous code copied a ta
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 使用方法的状态模式

    我正在尝试使用方法作为状态而不是类来基于状态模式的修改版本来实现一个简单的状态机 如下所示 private Action

随机推荐

  • Google App Engine 批量加载器转换的参考页面在哪里?

    从空数据存储中 我能够自动生成bulkloader yaml文件 它只包含python preamble 但是transformers部分是空的 python preamble import google appengine ext bul
  • 将数字向下舍入

    I have numeric就像这个 a lt 1 542045 我想将它们四舍五入 或四舍五入abs 到小数点后 2 位 signif a 3 会将其向下舍入并给出 1 54 作为结果 但对于本示例 我想要的结果是 1 55 任何想法 我
  • 钥匙串+临时分发

    首先 一些细节 我们正在开发一个 iOS 应用程序 目前使用 Swift Xcode 6 1 GM 2 进行开发 在临时分发应用程序时 我们在钥匙串访问方面遇到了一些令人困惑的问题 并且在追踪原因方面遇到了问题 所有配置文件都与我们应用程序
  • 无法打印字符串数组元素[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 每当我尝试运行该程序时 它都会返回一条错误消息 没有运算符 另请注意 该程序仅在getChoice 功能 include
  • 没有估计器的plot_confusion_matrix

    我正在尝试使用plot confusion matrix from sklearn metrics import confusion matrix y true 1 1 0 1 y pred 1 1 0 0 confusion matrix
  • 无需重新编译即可更改 CORBA 接口

    我想向现有服务器的 CORBA 接口添加一个方法 这需要重新编译所有客户端吗 我用的是TAO 不需要重新编译客户端 也不应该这样做 无论您使用什么 ORB 正如 Adam 所指出的 查找是通过操作名称完成的 直接文本比较 我已经使用我们基于
  • 为什么控制器内部存在的这个函数和属性没有被访问?

    app2 js function var app angular module panel app controller PanelController function this tab 1 this setTab function se
  • Python Flask SocketIO 在 @socketio 上下文之外广播

    我试图在外部值发生变化时发送广播 当值更改时 Camonitor 会调用回调 我想通知所有连接的客户端值已更改并且需要刷新 from flask import Flask from epics import caget caput camo
  • 通过 WSO2 API 管理器公开不安全的 url

    我有一个在 WSO2 的 API Manager Publisher 工具中设置的 API 当使用访问令牌正确调用时 所有调用都可以正常工作 但我有一个网址 我希望任何人都可以调用它 这是一个定制的 Swagger UI 页面 与 WSO2
  • Flot - 是否可以有第三个 y 轴或隐藏数据集?

    我有一个图表显示一个人的比赛时间 如果您将下面的代码复制 粘贴到任何一个flot示例中 它应该可以工作 我在 y1 轴上显示时间 在 y2 轴上显示每公里配速 因为它们都是 H M S 的时间 但我还想在图表中显示每场比赛的距离 由于此数据
  • asp.net MVC 和 RESTful 路由,rails 风格。是否可以?

    有什么方法可以让 MVC 中的路由工作真正平静 就像 Rails 的人所做的那样 我说的是嵌套网址 比如 bands metallica albums killemall track 4 我发现唯一有用的库是 Steve Hodgkiss
  • 在 .NET 5 项目的输出目录中创建了多余的“运行时”文件夹

    我刚刚将 WPF NET 4 6 项目迁移到 NET 5 我注意到它现在在输出目录中创建一个名为 runtimes 的文件夹 其中包含许多依赖于平台的 dll 由于此应用程序只能在 Windows 计算机上运行 因此是否可以阻止在 Visu
  • 在 iOS8 中使用 [UIView(Geometry) _applyISEngineLayoutValues] 重新进入视图时出现问题,但在 iOS7 中则不然

    我正在开发一个由其他人启动的应用程序 我相信是在 iOS 5 发布时启动的 大多数 UI 都是代码生成的 不会显式使用自动布局和约束 但是 有一些 后来添加的 自包含 UI 元素 在 nib xib 中定义 内部使用自动布局 这些元素包含在
  • 检查特定 gcc 编译器的 glibc 版本

    我的系统上安装了两个 gcc 编译器 一个是gcc 4 1 2 默认 另一个是gcc 4 4 4 如何查看使用的 libc 版本gcc 4 4 4 因为 lib libc so 6显示使用的 glibcgcc 4 1 2 因为它是默认编译器
  • 按接收顺序处理 WebSockets 消息

    我的应用程序的客户端部分需要严格按顺序处理 WebSocket 消息 不幸的是 每条消息的处理时间都相当长 大约 3 秒 因此在第一条消息结束之前会出现另一条消息 几条消息之后 顺序就完全不同了 如何在 JavaScript 中解决这个问题
  • 静态对象在多个正在运行的应用程序中是同一个对象吗?

    如果您有一个 Windows 服务和一个 Windows 窗体应用程序使用相同的静态对象 那么这两个应用程序中的对象是否相同 换句话说 如果我更新服务中的对象 如果两者同时运行 它也会在表单应用程序中更新吗 它们在不同的进程上运行 因此不共
  • 如何使用 Typescript 在 VueJs 手表中使用 Lodash debounce

    在 VueJS Javascript 中我可以这样做 import debounce from lodash debounce watch variable debounce function console log wow 500 在 V
  • 映射到 Java 8 中的运行总和

    如果我有一个集合 List
  • 如何使用 OpenSSL 创建和信任证书?

    如何使用 OpenSSL 创建有效的证书以在 IIS 中使用 HTTPS 绑定 它必须在 Firefox 和所有其他浏览器中工作 我使用的是 IIS 10 服务器 And Firefox v70 火狐开发者v72b5版本 Chrome v7
  • Qt支持虚拟纯插槽吗?

    我的 GUI 项目在Qt有很多 配置页面 类 它们都直接继承自QWidget 最近 我意识到所有这些类共享 2 个公共槽 loadSettings and saveSettings 对此 我有两个问题 编写一个中间基抽象类是否有意义 让我们