C ++:为事件处理程序创建一个匿名类

香港

免责声明:此描述包含许多Qt细节。他们不是必须回答的问题,我只是想为您提供背景。

我需要在反应focusInEventQTextEdit不幸的是,这不能作为信号,这就是为什么我需要subclass的原因QTextEdit由于这是我唯一需要的更改,因此我想使用一个匿名子类

像这样:

myTextEdit =new QTextEdit(){
            void focusInEvent(){
     //code here
     }
};

这是我要用Java编写的代码,它不能在c ++中编译。以下所有代码都在custom的构造函数中QWidgetQTextEdit被包含在这个小部件,并应在其构造函数初始化。

奇怪的是,此代码编译:

class MyTextEdit:protected QTextEdit{
    void focusInEvent();
};
auto myTextEdit=new MyTextEdit();

但没有用,因为我无法将的实例分配myTextEdit*给的指针QTextEdit多态性以某种方式失败了。此代码无法编译:

class MyTextEdit:protected QTextEdit{
        void focusInEvent();
    };
QTextEdit* myTextEdit=new MyTextEdit();

编译器错误是:

/home/lars/ProgrammierPraktikum/moleculator/implementation/Moleculator/gui_elements/editor.cpp:40:错误:“ QTextEdit”是“ Editor :: Editor(std :: shared_ptr):: MyTextEdit'QTextEdit *的不可访问基础新的MyTextEdit();

实际问题:

如何创建与其父类的指针兼容的匿名子类?

长颈鹿队长

您的子类化尝试

class MyTextEdit:protected QTextEdit{
        void focusInEvent();
    };
QTextEdit* myTextEdit=new MyTextEdit();

几乎可以。

仅仅因为该方法是受保护的,并不意味着您应该继承protected。

  • 一个受保护的方法说:这不是我的界面的一部分。除了我之外,没有人可以打电话给我。我自己称呼它(作为事件处理的一部分)。该方法可以在子类中被覆盖。
  • 继承保护说:没有人应该知道这种继承,它是一个实现细节,可能对扩展我的类很有用。

您需要常规的公共继承。

class MyTextEdit:public QTextEdit{
        void focusInEvent();
    };
QTextEdit* myTextEdit=new MyTextEdit();

现在您说的是MyTextEdit替代QTextEdit。您可能想要添加一个构造函数,以将父窗口小部件提供给MyTextEdit。

在c ++中,没有像Java一样的匿名内部类这样的东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在C ++中创建一个匿名的即时类(接口的实现)吗

来自分类Dev

将多个事件处理程序连接到C#中的一个事件的最佳方法?

来自分类Dev

C#确实从列表清除事件处理程序中删除了一个对象

来自分类Dev

为另一个宏生成名称(C预处理程序)

来自分类Dev

为通用类创建一个具体的构造函数,而无需在C#中继承

来自分类Dev

是否将在C#中为类的每个实例创建一个属性实例?

来自分类Dev

用C ++编写一个非常简单的事件类

来自分类Dev

用C ++编写一个非常简单的事件类

来自分类Dev

用C预处理器或C ++魔术来自动为每个文件创建一个对象?

来自分类Dev

C ++创建一个静态类来存储指针

来自分类Dev

C ++:如何创建一个类的对象的多集合?

来自分类Dev

创建一个类来调用实体C#

来自分类Dev

创建一个小排序(C++ 类介绍)

来自分类Dev

C# 从类型 FullName 创建一个类的实例

来自分类Dev

一个C#类中的多个计时器是否可以具有一个异常处理程序?

来自分类Dev

我可以在C#中创建一个全局异常处理程序,以使代码随后继续运行吗?

来自分类Dev

为SplashScreen创建一个C#组件

来自分类Dev

如何创建一个C#类的实例,其实例的属性为set.private..from F#

来自分类Dev

在 C 程序中使用 Curses 创建一个框

来自分类Dev

c#将事件的参数从另一个类传递到主类

来自分类Dev

为整个程序在一个地方处理键盘事件

来自分类Dev

C#创建匿名类

来自分类Dev

为什么在Linux上为一个C程序而不是一个C ++程序定义glGenVertexArrays?

来自分类Dev

在C ++ Builder中是否有一个有效的COM事件处理示例?

来自分类Dev

在Objective-C中将类对象设置为另一个类的属性

来自分类Dev

将值设置为另一个类的属性的类对象 - 目标 c

来自分类Dev

多个动态创建控件的C#事件处理程序

来自分类Dev

将C ++类转换为另一个类以创建OpenCV跟踪栏句柄

来自分类Dev

如何创建一个C ++类,以基于不同的相似类执行相同的计算?

Related 相关文章

  1. 1

    我可以在C ++中创建一个匿名的即时类(接口的实现)吗

  2. 2

    将多个事件处理程序连接到C#中的一个事件的最佳方法?

  3. 3

    C#确实从列表清除事件处理程序中删除了一个对象

  4. 4

    为另一个宏生成名称(C预处理程序)

  5. 5

    为通用类创建一个具体的构造函数,而无需在C#中继承

  6. 6

    是否将在C#中为类的每个实例创建一个属性实例?

  7. 7

    用C ++编写一个非常简单的事件类

  8. 8

    用C ++编写一个非常简单的事件类

  9. 9

    用C预处理器或C ++魔术来自动为每个文件创建一个对象?

  10. 10

    C ++创建一个静态类来存储指针

  11. 11

    C ++:如何创建一个类的对象的多集合?

  12. 12

    创建一个类来调用实体C#

  13. 13

    创建一个小排序(C++ 类介绍)

  14. 14

    C# 从类型 FullName 创建一个类的实例

  15. 15

    一个C#类中的多个计时器是否可以具有一个异常处理程序?

  16. 16

    我可以在C#中创建一个全局异常处理程序,以使代码随后继续运行吗?

  17. 17

    为SplashScreen创建一个C#组件

  18. 18

    如何创建一个C#类的实例,其实例的属性为set.private..from F#

  19. 19

    在 C 程序中使用 Curses 创建一个框

  20. 20

    c#将事件的参数从另一个类传递到主类

  21. 21

    为整个程序在一个地方处理键盘事件

  22. 22

    C#创建匿名类

  23. 23

    为什么在Linux上为一个C程序而不是一个C ++程序定义glGenVertexArrays?

  24. 24

    在C ++ Builder中是否有一个有效的COM事件处理示例?

  25. 25

    在Objective-C中将类对象设置为另一个类的属性

  26. 26

    将值设置为另一个类的属性的类对象 - 目标 c

  27. 27

    多个动态创建控件的C#事件处理程序

  28. 28

    将C ++类转换为另一个类以创建OpenCV跟踪栏句柄

  29. 29

    如何创建一个C ++类,以基于不同的相似类执行相同的计算?

热门标签

归档