分为四个步骤,步骤如下:
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中怎么触发判断鼠标左键的点击事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)