厦门自己建网站,腾讯邮箱网页版登录入口,设计参考网站有哪些,中国建设银行湖南分行官网站qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解
code review! 文章目录 qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解1.示例运行2.event-pos();详解3.event-pos()的坐标系原点4.Qt中的坐标系详解5.QMainWindow::mousePressEvent(event);详解 1.示例…qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解
code review! 文章目录 qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解1.示例运行2.event-pos();详解3.event-pos()的坐标系原点4.Qt中的坐标系详解5.QMainWindow::mousePressEvent(event);详解 1.示例运行
截图时鼠标没截到 (_; 代码
#include QApplication
#include QMainWindow
#include QMouseEvent
#include QDebugclass MainWindow : public QMainWindow
{
public:MainWindow(QWidget *parent nullptr) : QMainWindow(parent){setWindowTitle(Right-Click Example);}protected:void mousePressEvent(QMouseEvent *event) override{if (event-button() Qt::RightButton){QPoint position event-pos();int x position.x();int y position.y();qDebug() Mouse clicked at position: position;qDebug() x-coordinate: x;qDebug() y-coordinate: y;}else{QMainWindow::mousePressEvent(event);}}
};int main(int argc, char *argv[])
{QApplication app(argc, argv);MainWindow window;window.show();return app.exec();
}2.event-pos();详解
event-pos() 是一个用于获取鼠标事件位置的成员函数。它返回一个 QPoint 对象表示鼠标事件发生的位置坐标。
在上述代码中event 是一个指向 QMouseEvent 对象的指针它表示一个鼠标事件。通过调用 event-pos()可以获取鼠标事件发生时鼠标的位置坐标。
QPoint 是 Qt 框架提供的一个类用于表示二维坐标。它具有 x() 和 y() 方法可用于分别获取 x 和 y 坐标值。
以下是一些关于 event-pos() 的示例用法
void mousePressEvent(QMouseEvent *event)
{QPoint position event-pos();int x position.x();int y position.y();qDebug() Mouse clicked at position: position;qDebug() x-coordinate: x;qDebug() y-coordinate: y;
}在上述示例中首先通过 event-pos() 获取鼠标事件的位置坐标并将其存储在一个 QPoint 对象 position 中。然后使用 x() 和 y() 方法分别获取 x 和 y 坐标值。最后通过调试输出将位置坐标和坐标值打印到控制台。
总结来说event-pos() 是一个用于获取鼠标事件位置的函数它返回一个 QPoint 对象表示鼠标事件发生的位置坐标。
3.event-pos()的坐标系原点
event-pos() 返回的坐标是相对于接收鼠标事件的窗口部件的局部坐标系。它表示鼠标事件发生的位置相对于该窗口部件左上角的偏移量。
具体来说坐标系的原点位于窗口部件的左上角x 轴向右延伸y 轴向下延伸。因此如果 event-pos() 返回的坐标是 (x, y)那么表示鼠标事件发生在窗口部件中的 (x, y) 像素位置。
需要注意的是窗口部件的坐标系是相对于其父级窗口或容器的。如果窗口部件是应用程序的主窗口则其坐标系是相对于屏幕的。
如果需要将局部坐标转换为全局坐标屏幕坐标可以使用 mapToGlobal() 函数。例如event-pos().mapToGlobal() 将返回鼠标事件发生位置的全局坐标。
下面是一个示例展示了如何使用 event-pos() 获取鼠标事件的局部坐标
void mousePressEvent(QMouseEvent *event)
{QPoint localPos event-pos();qDebug() Local mouse position: localPos;
}在上述示例中event-pos() 返回的坐标被存储在 QPoint 对象 localPos 中并通过调试输出打印到控制台。
总结来说event-pos() 返回的坐标是相对于接收鼠标事件的窗口部件的局部坐标系原点位于左上角x 轴向右y 轴向下延伸。如需将局部坐标转换为全局坐标可以使用 mapToGlobal() 函数。
4.Qt中的坐标系详解
在Qt中坐标系用于描述界面元素的位置和大小。Qt使用的坐标系是基于笛卡尔坐标系具有以下特点 坐标原点Qt的坐标原点通常位于左上角即(0, 0)。这意味着x轴向右增加y轴向下增加。这种坐标系也被称为左上角坐标系。 单位Qt中的坐标单位通常是像素Pixel。每个像素表示屏幕上的一个点用于测量和定位界面元素的位置和大小。 窗口坐标系在窗口中坐标系的原点通常位于窗口的左上角。窗口的左上角坐标为(0, 0)并且x轴向右延伸y轴向下延伸。窗口坐标系用于描述窗口内部的界面元素的位置和大小。 屏幕坐标系屏幕坐标系是全局的坐标系用于描述屏幕上的位置。屏幕坐标系的原点通常位于显示器的左上角与窗口坐标系的原点不一定对齐。屏幕坐标系可以用于将窗口坐标转换为全局坐标以及进行屏幕坐标上的操作。 父子坐标系在Qt中界面元素例如窗口、小部件可以形成父子关系。对于子元素其坐标一般相对于其父元素。子元素的坐标原点位于其父元素的左上角。 坐标转换Qt提供了一些函数来进行坐标转换例如 mapToGlobal()将局部坐标转换为全局坐标。mapFromGlobal()将全局坐标转换为局部坐标。mapToParent()将子元素的局部坐标转换为父元素的坐标。mapFromParent()将父元素的坐标转换为子元素的局部坐标。
总而言之在Qt中坐标系用于定位和描述界面元素的位置和大小。默认情况下Qt使用左上角坐标系原点位于窗口或界面元素的左上角。了解和理解Qt的坐标系是编写界面布局和处理交互事件的重要基础。
5.QMainWindow::mousePressEvent(event);详解
QMainWindow::mousePressEvent(event) 是一个语句用于调用基类 QMainWindow 的 mousePressEvent 函数来处理鼠标点击事件。
在代码中的 else 分支中如果鼠标点击事件的按钮不是右键那么会执行 QMainWindow::mousePressEvent(event)。这样做的目的是将处理其他类型的鼠标点击事件的责任委托给基类的实现。
基类的 mousePressEvent 函数是 Qt 框架中定义的一个虚函数可以在子类中进行重写。它用于处理鼠标点击事件的默认行为。通过调用基类的 mousePressEvent(event)可以确保在处理右键点击事件之外的其他类型的鼠标点击事件时仍保留基类的默认行为。
在这个特定的代码示例中MainWindow 类继承自 QMainWindow并重写了 mousePressEvent 函数。当鼠标点击事件的按钮不是右键时通过调用 QMainWindow::mousePressEvent(event)可以继续执行基类 QMainWindow 的默认处理方式以保持应用程序的正常行为。
总结来说QMainWindow::mousePressEvent(event) 是一个语句用于调用基类 QMainWindow 的 mousePressEvent 函数来处理除右键点击之外的其他类型的鼠标点击事件以保持基类默认行为的一致性。