gpt4 book ai didi

c++ - 使用带有继承的 Qt5 新连接语法

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:55 26 4
gpt4 key购买 nike

我正尝试在一些遗留代码中使用新的连接语法,但遇到了架构问题。所以让我们假设我有一个如下所示的 BaseReader 类:

class BaseReader : public QObject
{
Q_OBJECT

public:
BaseReader();

public slots:
virtual void read(const fstream& myStream);
}

然后假设我有一些像这样的 child 类(class)

class Reader1 : public BaseReader
{
Q_OBJECT

public:
BaseReader();

public slots:
virtual void read(const fstream& myStream);
}

有些读取工作在基类中完成,有些在子类中完成。我有大约 4 个在运行时切换的类。我有一个如下所示的 connectReaders 函数:

void connectReaders(BaseReader* currentReader)
{
connect(this, SIGNAL(mustRead(const fstream&)), currentReader, SLOT(read(const fstream&)));
}

现在我的理解是,如果我使用新语法,我将连接到基本成员函数,而不是重载版本。那是对的吗 ?有没有办法在不修改架构的情况下使用新语法连接这些信号?我的示例非常简单,修改该代码需要几个月的时间(包括测试)。它以旧方式工作,但我想利用新语法。有什么想法吗?

我看过这些线程,但它们似乎没有提供解决此问题的方法:

我有 qt5.4.1,Visual Studio 2013。

最佳答案

将新的“connect”语法与虚拟槽和基类对象指针一起使用时没有问题。您正在指定对象实例(例如 currentReader),要调用的特定方法将使用此对象的虚拟方法表来解析。

关于c++ - 使用带有继承的 Qt5 新连接语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35341708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com