qchart获取鼠标位置

qchart获取鼠标位置,第1张

分为四个步骤,步骤如下:

1、首先新建qt工程,修改pro文件,增加对script的支持。

2、在构造函数中,增加一个QScriptEngine对象。

3、调用evaluate方法执行js命令。

4、最后通过hasUncaughtException方法,判断是否有异常。

一前言

突发奇想,滚轮事件既然能被捕获,那能不能被确定滚轮的方向呢???

二过程

不管三七二十一,先把event打印一下

滚动过程中发现angleDelta有变化,并且是向前滚为正,向后滚为负,故猜测应该是angleDelta来体现的

后面查阅文档:

Returns the distance that the wheel is rotated, in eighths of a degree A positive value indicates that the wheel was rotated forwards away from the user; a negative value indicates that the wheel was rotated backwards toward the user

大概的意思就是,这个值是返回滚轮被旋转的距离,值表示滚轮向前旋转,远离用户;负值表示滚轮向后旋转向用户

至此,就可以确定滚动的方向了

void Widget::wheelEvent(QWheelEvent event)

{

qDebug()<<QDateTime::currentDateTime()toString("[yyyy-MM-dd HH:mm:sszzz]")<<event;

if(event->angleDelta()y()>0)

{

qDebug()<<"向前滚";

// 放大业务逻辑

}

else

{

qDebug()<<"向后滚";

// 缩小业务逻辑

}

}

原文链接: >

1继承QTreewidget重新实现他的mouseReleaseEvent方法,为什么是release方法,因为源码里面mousePressEvent方法用来绘制treeWidget,而release方法则会发送出点击事件的信号

#ifndefTREEWIDGET_H

#define TREEWIDGET_H

#ifndef TREEWIDGET_H

#define TREEWIDGET_H

#include <QWidget>

#include <QTreeWidget>

#include <QMouseEvent>

class QTreeWidget2 : public QTreeWidget

{

Q_OBJECT

public:

explicit QTreeWidget2( QWidget parent = 0 );

protected:

void mouseReleaseEvent (QMouseEvent event);

};

#endif // TREEWIDGET_H

2实现

#include "treeWidgeth"

QTreeWidget2::QTreeWidget2( QWidget parent)

:QTreeWidget(parent)

{

}

void QTreeWidget2::mouseReleaseEvent (QMouseEvent event)

{

if (event->button () & Qt::RightButton )

{

emit customContextMenuRequested( event->pos ());

}else if (event->button () & Qt::LeftButton){

emit itemClicked(itemFromIndex (indexAt ( event->pos () )),indexAt ( event->pos () )column ());

}

}

3测试

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

#include <QTreeWidgetItem>

class QTreeWidget2;

static const int itemtype1 = QTreeWidgetItem::Type;

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow( QWidget parent = 0 );

public slots:

void setTest2(const QPoint &pos);

void setTest(QTreeWidgetItemitem,int column);

private:

QTreeWidget2 treeWidget;

QTreeWidgetItem currentItem;

};

#endif // MAINWINDOW_H

#include "mainwindowh"

#include "treeWidgeth"

#include <QMessageBox>

#include <QtDebug>

MainWindow::MainWindow(QWidget parent):

QMainWindow(parent)

{

treeWidget = new QTreeWidget2;

treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);

treeWidget->setHeaderLabel ( tr("资源列表") );

QTreeWidgetItem root = new QTreeWidgetItem( treeWidget );

root->setText (0,tr("root"));

QTreeWidgetItem item = new QTreeWidgetItem( root );

item->setText (0,tr("a"));

QTreeWidgetItem item1 = new QTreeWidgetItem( item );

item1->setText (0,tr("b"));

QTreeWidgetItem item2 = new QTreeWidgetItem( item1 );

item2->setText (0,tr("c"));

connect( treeWidget,SIGNAL(customContextMenuRequested( const QPoint &)),

this,SLOT(setTest2(const QPoint &)));

connect( treeWidget,SIGNAL(itemClicked(QTreeWidgetItem,int)),

this,SLOT(setTest(QTreeWidgetItem,int)));

setCentralWidget ( treeWidget );

resize ( 500,400 );

}

void MainWindow::setTest2(const QPoint &pos)

{

currentItem = treeWidget->itemAt(pos);

if ( currentItem == NULL )

return;

QMessageBox::warning (this,tr("test"),tr("hello"));

}

void MainWindow::setTest(QTreeWidgetItemitem,int column)

{

QMessageBox::warning (this,tr("asd"),tr("sd"));

鼠标事件使用的时候,需要加头文件。

鼠标移动事件默认情况下,触发事件需要点击一下,才能触发。可设置为自动触发。一个鼠标事件包含一些指定的接受标志flag用于指出该事件是否会被接收和处理,如果鼠标指针所在的父窗口不接收该事件则可以调用函数ignore()予以忽略。

Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,包括Qt、基于FrameBuffer的QtopiaCore、快速开发工具QtDesigner和国际化工具QtLinguist等部分。Qt支持所有的UNIX系统,当然也包括Linux系统,还支持WinNT/Win2k、Windows95/98平台。

以上就是关于qchart获取鼠标位置全部的内容,包括:qchart获取鼠标位置、Qt笔记(十七)之鼠标滚轮事件方向、QTreeWidget中怎么触发判断鼠标左键的点击事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9708997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存