QGraphicsItem::paint
具有以下签名:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
当我创建定制的QGraphicsItem
时,我必须为这个函数提供一个实现。问题是...我从来不需要使用option
和widget
参数,但我不能因为显而易见的原因就删除它们。我总是看到这些编译器警告:
警告:未使用的参数'widget'
警告:未使用的参数“option”
有没有适当的方法来消除这些警告?我知道我可以通过在函数中提到未使用的参数来隐藏它们,但这是一个非常肮脏的解决方案,我想知道是否有更好的选择。
6条答案
按热度按时间gjmwrych1#
忽略参数名称:
或使用Q_UNUSED宏:
vjrehmav2#
不要为未使用的参数提供参数名。例如(我不确定您的“event”指的是什么),要去掉
warning: unused parameter ‘option’
,请将您的签名更改为:(The就警告而言,
/* unused */
标记是不必要的,但我发现它对人类读者很有用。)ztigrdn83#
基本上有三种适当的方法可以使未使用的参数编译器警告静音:
将未使用的参数显式强制转换为void:
这种模式符合标准,被程序员广泛理解,像GCC这样的编译器看到参数被使用了,因此不会发出警告,并优化了这些行,因为它们是无操作的(即没有任何效果)。
或者,您可以使用Qt的
Q_UNUSED
宏:对于GCC和其他编译器,它还扩展为
(void)
-cast模式,但它也可能包含一些对晦涩的编译器来说不够的变通方法。例如,在Qt 5.4.1中,它被定义为:使用
Q_UNUSED
可以说更容易阅读,并且必须用于对Qt的贡献。注解掉参数名称的第三个选项:
这可能更难阅读。此外,它可能会增加完全删除参数名的诱惑-这可能会使函数更难理解。当然,当更改代码以使用之前未使用的参数时,这种风格也比其他风格涉及更多的编辑操作。
zhte4eai4#
使用Qt宏:
Q_UNUSED
来完成此操作l0oc07j25#
您可以省略参数名称,以告知编译器未使用该参数:
qcuzuvrc6#
你也可以在你的.pro文件中设置编译标志。这些是gcc的标志:
这样,您就不必更改代码来取消此警告。
这可能不适合所有人,但它是另一种选择。