Qt警告:正在传递用于转换QRect的qreal::QRect(int,int,int)

Qt warning: passing qreal for converting QRect::QRect(int, int, int, int)

本文关键字:int QRect qreal 用于 警告 Qt 转换      更新时间:2023-10-16

我收到以下代码警告:

QRect rct ( 0, 0, rect().width(), rect().height() );
warning: passing `qreal' for converting 3 of `QRect::QRect(int, int, int, int)'
warning: passing `qreal' for converting 4 of `QRect::QRect(int, int, int, int)'

我在谷歌上搜索了一下,但没有找到太多。如何避免此警告?

谢谢你抽出时间。

似乎rect()返回一个QRectF,并且您希望将其转换为QRect。你有两个选择:

  • QRectF::toRect(丢弃的小数部分)
  • QRectF::toAlignedRect(四舍五入)

我没有足够的声誉发表评论,所以我必须修改LogicStuff的回复。我们的答案对文件有不同的解释,所以请检查一下,如果我错了,我很乐意删除。

看起来rect()返回一个QRectF,并且您希望将其转换为QRect。你有两个选择:

  • QRectF::toRect(四舍五入到最接近的整数)
  • QRectF::toAlignedRect(边界框,包含所需QRectF的最小整数矩形)

toRect

例如,对于精确绘制看起来准确的

到对齐矩形

例如,为了确保在绘制某个东西时不会遗漏一行像素。

例如,二进制中的1/3是0.0101010101010101010101...因此,根据你如何计算三分之一半,你可能会得到一半,表示为CCD_ 7或CCD_。如果你画了一个特征的边缘(以一种方式计算),而在使用另一种方式算出的矩形擦除石板时忽略了擦除一行像素,那将是不幸的。我的计算示例可能是错误的,但它只是为了说明问题。