QT判断界面当前点击的按钮和当前鼠标坐标

1.QObject::sender( ) 返回发送信号的对象的指针,返回类型为QObject* 。可使用qobject_cast动态类型转换成对应的发送信息的对象(对象类的基类中需要有QObject)。

QObject::objectName( ) 返回对象的名称(QString)

1 QPushButton*btn = qobject_cast<QPushButton*>(sender());//获取发射信号的对象
2 if("按钮对象名"==btn->objectName()){//如果获取到对象
3 //...
4 }

2 . QMouseEvent中两类坐标系统,一类是窗口坐标(相对坐标),一类是显示器坐标(全局坐标)。

QPointQMouseEvent::globalPos();//窗口坐标,这个是返回鼠标的全局坐标
QPointQCursor::pos()[static];//返回相对显示器的全局坐标
QPointQMouseEvent::pos();//返回相对这个widget的位置
QPointQWidget::pos();//这个属性获得的是当前目前控件在父窗口中的位置
constQPointF&QMouseEvent::screenPos()const;//和QPoint QMouseEvent::globalPos() 值相同,但是类型更高精度的QPointF
QPointQWidget::mapToGlobal(constQPoint& pos)const;//将窗口坐标转换成显示器坐标
QPointQWidget::mapFromGlobal(constQPoint& pos)const;//将显示器坐标转换成窗口坐标
QPointQWidget::mapToParent(constQPoint& pos)const;//将窗口坐标获得的pos转换成父类widget的坐标
QPointQWidget::mapFromParent(constQPoint& pos)const;//将父类窗口坐标转换成当前窗口坐标
QPointQWidget::mapTo(constQWidget* parent,constQPoint& pos)const;//将当前窗口坐标转换成指定parent坐标
//也可使用:
Qpoint pt=cursor().pos();//获取当前鼠标位置
  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我理解了你的要求,我会根据你的要求为您提供帮助。首先,您需要一个基于Qt的图形界面应用程序,以便您可以在其中添加功能。在您的程序中,您需要使用Qt提供的QPainter类来画矩形框。可以使用QPainter的drawRect函数来绘制矩形框,并且可以使用鼠标事件来获取绘制矩形框的坐标。下面是一个简单的示例代码: ```c++ #include <QtWidgets/QApplication> #include <QtWidgets/QWidget> #include <QMouseEvent> #include <QPainter> #include <QDebug> class MyWidget : public QWidget { public: MyWidget(QWidget *parent = 0) : QWidget(parent) { setFixedSize(300, 300); setWindowTitle("Draw Rectangle"); } protected: virtual void mousePressEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { m_rectStart = event->pos(); } } virtual void mouseReleaseEvent(QMouseEvent *event) override { if (event->button() == Qt::LeftButton) { m_rectEnd = event->pos(); update(); } } virtual void paintEvent(QPaintEvent *event) override { QWidget::paintEvent(event); QPainter painter(this); painter.fillRect(rect(), Qt::white); QRectF rect = QRectF(m_rectStart, m_rectEnd); painter.drawRect(rect); qDebug() << "Rect: " << rect.x() << ", " << rect.y() << ", " << rect.width() << ", " << rect.height(); } private: QPoint m_rectStart; QPoint m_rectEnd; }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MyWidget widget; widget.show(); return app.exec(); } ``` 在上面的代码中,我们创建了一个QWidget来实现我们的应用程序,并重载了QMouseEvent事件,以便我们可以在用户单击左键时获取矩形的起点位置。当用户释放鼠标按钮时,我们将获取到的坐标存储在矩形的末点位置。然后,我们重载了paintEvent事件,并使用QPainter类来在窗口中绘制矩形框并打印出它的坐标。 您可以将上面的代码复制到Qt Creator中并编译它,并运行来查看代码的运行结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值