gpt4 book ai didi

c++ - 在 Qt5 代码中禁用旧的(Qt4 风格的)Signal-Slot 语法

转载 作者:可可西里 更新时间:2023-11-01 16:36:38 25 4
gpt4 key购买 nike

有什么方法可以防止或阻止使用 old Signal-Slot syntax 在完全用 Qt5 编写的项目中来自 Qt4?

在我们当前的项目中,没有出现旧语法,我也没有看到任何支持它们的理由。因此我们想完全禁用它以防止意外使用。这可能吗,例如通过在 .pro 文件中定义某些符号?

我知道这应该可以通过自定义 Linter 规则实现,但不幸的是我们还没有集中化。

//old way. should throw a compiler error or warning
connect(sender, SIGNAL(sig), receiver, SLOT(slt));

//new way
connect(sender, &Send::sig, receiver, &Rec::slt);

最佳答案

如果您在项目中有一个共享头文件,您可以确保将其包含在 QObject 之后,您可以这样做:

#define SIGNAL(x) static_assert(false, "String-based signal/slot syntax has been disabled in this project")

对于 SLOT 也是如此。

如果你想把它变成警告,check out this answer .我绝对同意你的观点,基于字符串的语法是一种瘟疫,不应出现在 uiced 文件之外。

关于c++ - 在 Qt5 代码中禁用旧的(Qt4 风格的)Signal-Slot 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803634/

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