[Qt-users:376] Re: 矩形の重なり判定

Chironian chironian123 @ gmail.com
2014年 12月 11日 (木) 22:40:15 JST


 そらみみさん、こんにちは。ケイロニアンです。

 ちょろっとQtのソースみてみました。
 QRectのソースはqtbase\src\corelib\tools\qrect.cppにありました。
(5.4.0を見ています。)

 QRect::contains()は頭でisNull()ならfalseを返却してます。
 isNull()の定義は(left==right) 【&&】 (top==bottom)ですから、そらみみさ
んのソースの場合、isNull()に該当しないのでfalseは返らないでOKですね。
 しかし、QRectF::contains()は、処理の途中で(left==right)、【もしくは】、
(top==bottom)になった時に、falseを返却しています。
 そらみみさんのソースの場合、この条件に該当するのでfalseが返ることにな
りますね。
 つまり、Qtのソース的にQRectではtrue、QRectFではfalseとなっていると思い
ます。

 同じ名前の関数の動作が異なるのは違和感が強いです。
 QRectFの上記条件判断しているところに、"null rect"ってコメントされてま
す。でも、この条件はisNull()ではなくisEmpty()と同じだと思います。
(emptyは空の容器で、nullは容器ごと無いなんてイメージかも?)

 私はまだQt始めたばかりですので、ちょっと心配です。他の方のご意見もご確
認下さいね。

以上

PS.小澤さん
 ごめん。私はAndroidは大昔触ったっきりでもう覚えていません。解る方が来
られるのをお待ちくださいな。


Qt-users メーリングリストの案内