Qt-杂记 —— 如何判断一个点在一个区域范围内

文章目录

  • 如何判断一个点在一个区域范围内
  • 附录
  • 个人格言

如何判断一个点在一个区域范围内

    我们有时候需要去判断鼠标点击的点或者某些点是不是在Qt 某个控件中定义的一个区域内,那么遇到这样的需求应该怎么办呢?

     其实,想要判断起来还是比较简单的,我们只需要调用对应区域QRect的一个方法即可:

bool QRect::contains ( const QPoint & point, bool proper = false ) const

     举例来讲,可以参考下面的示例代码作为一个参考:

int main() 
{
	QPoint topLeft(100,100);
	QPoint rightBottom(200,200);
	QRect rect(topLeft,rightBottom);
	if(rect.contains(e->pos()))
	{
		qDebug() << "inner of this rect."
	}
	else 
	{
		qDedbug() << "outer of the rect."
	}
	// To do other things.
	return 0;
}

     那么,从我工作中需要用到这样的一个需求的代码里,来看看其具体的实际应用吧:

// ……
QRect m_leftRect = QRect(0, 0, iconSize.width + 2 + 
textSize.width + 2, parentWidget()->rect().height());
QRect m_rightRect = QRect(0, 0, iconSize.width + 2 +
textSize.width + 2, parentWidget()->rect().height());
// ……
void XXX::mousePressEvent(QMouseEvent * e) 
{
	// …… 用区域判断鼠标点击的点是否在左右两个对应的区域中。
	if (m_rightRect.contains(e->pos())) 
	{
		// To do something.
	}
	else if (m_leftRect.contains(e->pos())) 
	{
		// To do other things.
	}
}
// ……

     上面这个代码过程,所完成的功能是什么呢?就是讲一个控件区分为不同的点击区域,就可以实现不同的点击效果,比如一个Widget你可以让他点击左边区域显示一个颜色,点击右边区域显示另外一个颜色,就可以实现不同区域效果的划分。

     以前大部分写Qt都是用layout布局为主,开始学习使用用Painter来绘制的时候,你会发现,Rect配合你的一些Point能玩出一些神奇的效果。

附录

参考链接:

  1. Qt 如何判断一个点在一个区域

个人格言

     用心去感受你自己需要坚持的生活,未来慢慢会给你答案的。

你可能感兴趣的:(C++,Qt,杂谈,c++,c语言,qt,技巧)