獲取鼠標點擊處的控件並獲取其座標

 

int mouse_x = QCursor::pos().x();//鼠標點擊處橫座標
int mouse_y = QCursor::pos().y();//鼠標點擊處縱座標
QWidget *action = QApplication::widgetAt(mouse_x, mouse_y);//獲取鼠標點擊處的控件
QPoint GlobalPoint(action->mapToGlobal(QPoint(0, 0)));//獲取該控件在窗體中的座標
int x = GlobalPoint.x();//該控件在窗體中左上角橫座標
int y = GlobalPoint.y();//該控件在窗體中左上角縱座標
 

QT 獲取控件widget的屏幕座標

 :
方法一:
/// 獲取窗口控件的屏幕位置,類似於ClientToScreen
QPoint GlobalPoint(widget->mapToGlobal(QPoint(0,0)));

方法二:
/// 獲取窗口控件的屏幕位置
static QPoint getPos(QWidget* widget)
{
 if (NULL == widget)
 {
  return QPoint(-1,-1);
 }
 float px = 0;
 float py = 0;
 QWidget *parent = widget;
 QWidget *preParent= NULL;
 do
 {
  QPoint p = parent->pos();
  px += p.x();
  py += p.y();
  preParent = parent ;
  parentw = parent->parentWidget();
 
 } while (NULL != parent);
 QSize size = preParent->frameSize();
 QSize size2 = preParent->size();
 px = px + (size.width() - size2.width())/2;
 py = py + (size.height() - size2.height() - (size.width() - size2.width())/2);
 QPoint pr(px, py);
 return pr;
}
    
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章