悬浮鼠标?鼠标悬浮球下载
- 跳转官网下载下载点击免费下载
大家好,悬浮鼠标相信很多的网友都不是很明白,包括鼠标悬浮球下载也是一样,不过没有关系,接下来就来为大家分享关于悬浮鼠标和鼠标悬浮球下载的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
一、qt鼠标悬浮拖拽
1.首先,需要设置自己的控件是支持拖放操作的,按照如下设置即可:
setDragEnabled(true);//允许拖拽
setAcceptDrops(true);//允许放置
登录后复制
2.其次,我这个拖放操作是基于QTreeView来完成的,因此继承这个QTeeView之后还需要实现startDrag()这个函数。它可以被理解成是拖放操作的入口函数。
//开始拖拽事件
virtual void stratDrag(Qt::DropActions supportedAxtions);
//这个函数可以理解为拖放操作的入口函数。当拖放开始进行时,就会发现断点会进到这里。
void CMyTree::stratDrag(Qt::DropActions supportedAxtions)
{
QDrag* pDrag= new QDrag(this);
QMimeData* pMimeData= new QMimeData;
QModelIndex index= currentIndex();
if(pDrag&& pMimeData)
{
pDrag->setMimeData(pMimeData);
pDrag->exec(Qt::MoveAction);
}
}
登录后复制

3.接下来,拖放操作肯定是离不开鼠标的按压与移动的。因此还需要实现以下几个虚函数。
//鼠标点击事件
virtual void mousePressEvent(QMouseEvent*event);
//拖拽进入事件
virtual void dragEnterEvent(QDragEnterEvent* event);
//拖拽移动事件
virtual void dragMoveEvent(QDragMoveEvent* event);
//拖放事件
virtual void dropEvent(QDropEvent*event);
//鼠标松开事件
virtual void mouseReleaseEvent(QMouseEvent*event);
//鼠标移动事件
virtual void mouseMoveEvent(QMouseEvent*event);
//鼠标悬停事件
virtual bool viewportEvent(QEvent*event);
登录后复制

当一切准备工作完成后,再通过QTreeView与QStandardItemModel相结合,完成一些列的拖放操作。本例大致需求是:将叶子节点拖放到不同组织下。整个源码如下:
//CMyTree.h
#pragma once
#include<QTreeView>
#include<QStandardItem>
class CMyTree:
public QTreeView
{
public:
CMyTree(QWidget* parent= nullptr);
protected:
//开始拖拽事件
virtual void stratDrag(Qt::DropActions supportedAxtions);
//鼠标点击事件
virtual void mousePressEvent(QMouseEvent*event);
//拖拽进入事件
virtual void dragEnterEvent(QDragEnterEvent* event);
//拖拽移动事件
virtual void dragMoveEvent(QDragMoveEvent* event);
//拖放事件
virtual void dropEvent(QDropEvent*event);
//鼠标松开事件
virtual void mouseReleaseEvent(QMouseEvent*event);
//鼠标移动事件
virtual void mouseMoveEvent(QMouseEvent*event);
//鼠标悬停事件
virtual bool viewportEvent(QEvent*event);
private:
QStandardItem* m_pDragItem;
QStandardItem* m_pDropItem;
};
登录后复制

//CMyTree.cpp
#include"CMyTree.h"
#include<QDrag>
#include<QMimeData>
#include<QStandardItemModel>
#include<QMouseEvent>
CMyTree::CMyTree(QWidget* parent/*= nullptr*/)
: QTreeView(parent)
, m_pDragItem(nullptr)
, m_pDropItem(nullptr)
{
setDropIndicatorShown(true);
setHeaderHidden(true);//隐藏表头
setDragEnabled(true);//允许拖拽
setAcceptDrops(true);//允许放置
}
void CMyTree::stratDrag(Qt::DropActions supportedAxtions)
{
QDrag* pDrag= new QDrag(this);
QMimeData* pMimeData= new QMimeData;
QModelIndex index= currentIndex();
if(pDrag&& pMimeData)
{
pDrag->setMimeData(pMimeData);
pDrag->exec(Qt::MoveAction);
}
}
void CMyTree::mousePressEvent(QMouseEvent*event)
{
if(Qt::RightButton== event->button())
{
setDragEnabled(false);
}
else if(Qt::LeftButton== event->button())
{
setDragEnabled(true);
}
QTreeView::mousePressEvent(event);
}
void CMyTree::dragEnterEvent(QDragEnterEvent* event)
{
if(event->mimeData())
{
QStandardItemModel* pModel=(QStandardItemModel*)(this->model());
QPoint mousePos= event->pos();
QModelIndex localIndex= indexAt(mousePos);
m_pDragItem= pModel->itemFromIndex(localIndex);
QString strData= localIndex.data(Qt::DisplayRole).toString();
QRect rect= visualRect(localIndex);
event->accept();
}
}
void CMyTree::dragMoveEvent(QDragMoveEvent* event)
{
if(event->mimeData())
{
update();
event->accept();
}
}
void CMyTree::dropEvent(QDropEvent*event)
{
QStandardItemModel* pModel=(QStandardItemModel*)(this->model());
QPoint mousePos= event->pos();
QModelIndex localIndex= indexAt(mousePos);
m_pDropItem= pModel->itemFromIndex(localIndex);
QString strData= localIndex.data(Qt::DisplayRole).toString();
QRect rect= visualRect(localIndex);
//同组织下释放没效果
QStandardItem* pDragItemParent= m_pDragItem->parent();
QStandardItem* pDropItemParent= m_pDropItem->parent();
if(pDragItemParent== pDropItemParent)
{
return;
}
else if(pDragItemParent&& pDropItemParent)
{
QStandardItem* pItem= new QStandardItem(m_pDragItem->data(Qt::DisplayRole).toString());
pDropItemParent->appendRow(pItem);
}
update();
}
void CMyTree::mouseReleaseEvent(QMouseEvent*event)
{
QTreeView::mouseReleaseEvent(event);
}
void CMyTree::mouseMoveEvent(QMouseEvent*event)
{
QTreeView::mouseMoveEvent(event);
}
bool CMyTree::viewportEvent(QEvent*event)
{
return QTreeView::viewportEvent(event);
}
登录后复制

//CMyApp.h
#pragma once
#include<QtWidgets/QWidget>
#include<QStandardItemModel>
#include"ui_CMyApp.h"
class CMyApp: public QWidget
{
Q_OBJECT
public:
CMyApp(QWidget*parent= Q_NULLPTR);
void InitUI();
private:
Ui::CMyAppClass ui;
QStandardItemModel* m_pModel;
};
登录后复制

//CMyApp.cpp
#include"CMyApp.h"
#include<QStandardItem>
CMyApp::CMyApp(QWidget*parent)
: QWidget(parent)
{
ui.setupUi(this);
m_pModel= new QStandardItemModel(ui.treeView);
InitUI();
}
void CMyApp::InitUI()
{
QStandardItem* pItem1= new QStandardItem(QStringLiteral("法师"));
m_pModel->appendRow(pItem1);
QStandardItem* pItem1_1= new QStandardItem(QStringLiteral("妲己"));
QStandardItem* pItem1_2= new QStandardItem(QStringLiteral("小乔"));
QStandardItem* pItem1_3= new QStandardItem(QStringLiteral("西施"));
pItem1->appendRow(pItem1_1);
pItem1->appendRow(pItem1_2);
pItem1->appendRow(pItem1_3);
QStandardItem* pItem2= new QStandardItem(QStringLiteral("法刺"));
m_pModel->appendRow(pItem2);
QStandardItem* pItem2_1= new QStandardItem(QStringLiteral("不知火舞"));
QStandardItem* pItem2_2= new QStandardItem(QStringLiteral("貂蝉"));
QStandardItem* pItem2_3= new QStandardItem(QStringLiteral("上官婉儿"));
pItem2->appendRow(pItem2_1);
pItem2->appendRow(pItem2_2);
pItem2->appendRow(pItem2_3);
ui.treeView->setModel(m_pModel);
}
登录后复制

//main.cpp
#include"CMyApp.h"
#include<QtWidgets/QApplication>
int main(int argc, char*argv[])
{
QApplication a(argc, argv);
CMyApp w;
w.show();
return a.exec();
}
二、磁悬浮鼠标的主要功能
在谷歌和苹果一直争斗的今天,谷歌眼镜,苹果智能手表,这些几乎已经抢占了人们所有的眼球。但我却对一些新颖的小东西产生兴趣,比如来自俄罗斯设计师Vadim Kibardin的创意:磁悬浮鼠标(BAT Mouse)。可惜的是,这还只是一个概念,当然这也并不意味着它不会出现在未来某个时间段里,虽然这款小东西不像其他概念设备那样有着广泛的用途,但它小巧玲珑的外观的确很让人着迷。
在很多年以前,对于“磁悬浮”这个词,大多数人都会感到很陌生,但随着科技的发展,磁悬浮技术逐渐应用在人们的生活中,而众所周知的则是上海的磁悬浮列车了。顾名思义磁悬浮技术是利用磁场力使物体沿着一个轴或几个轴保持一定位置的技术措施。这个高科技的产物最终出现在了数码产品上,这也就是由俄罗斯设计师Vadim Kibardin带来的磁悬浮鼠标(BAT Mouse)创意。
对于这个无线磁悬浮鼠标的诞生,还是由于办公室的白领人士们每天要操控鼠标,经过长时间的操控造成的鼠标手。设计师把鼠标垫变成了一个磁性基座,而鼠标本身悬浮在这个基座上。这款鼠标的构造很简单,它是由一个悬浮导航器和磁力底圈组成,并依靠简单的磁悬浮技术原理实现鼠标悬浮在空中。通过设计师的解释,它可以预防并治疗腕管综合征(正中神经功能障碍)。活跃的计算机使用者很容易患上这种疾病,这个设计希望通过提高人体工程学的控制,来消除因使用鼠标而带来的手部麻木感,刺痛,虚弱或肌肉损伤。
当人们第一眼看到这款鼠标的外观造型时,肯定会将它和科幻电影中的飞行器联系起来。的确如此,这款鼠标的造型设计十分拉风,它有着类似微软鼠标的拱形外观,只不过增加了一圈悬浮框。当人们将手掌和手肘放在上面使用时不必担心这款鼠标的磁力,它足以撑起人们因为操作带来的压力,或许对于那些习惯了放在桌面上使用的鼠标的人来说,第一次接触它还会感到不好操控,但经过磨合你肯定会爱上它,BAT Mouse会带给你一种与众不同的操控感受。
这玩意可以让你彻底告别鼠标垫,有没有注意过你的鼠标垫,又脏又破又难看是吧?或许这将是“高富帅”和“白富美”拿来炫耀的新玩意儿吧!
三、鼠标左键悬浮触发
鼠标左键悬浮触发的原因是因为在计算机界面设计中,悬浮触发是一种常见的交互方式,通过鼠标悬停在某个元素上来触发相应的操作或显示信息。这种设计方式主要有以下几个原因:
1.提升用户体验:鼠标左键悬浮触发可以在不进行点击的情况下,快速预览或获取与元素相关的信息,减少了用户的操作步骤和等待时间,提升了用户的使用体验。
2.节省界面空间:与一些需要点击才能显示详细信息的设计相比,鼠标左键悬浮触发可以在界面上直接显示相关信息,节省了界面的空间,使界面更加简洁和清晰。
3.方便快捷的操作:通过鼠标左键悬浮触发,用户可以快速查看某个元素的详细信息,如链接的预览、图片的放大等,而无需打开新的页面或进行其他复杂的操作。
4.提示额外信息:当鼠标悬停在某个元素上时,可以通过悬浮触发来显示与该元素相关的额外信息,如工具提示、说明文字或操作按钮等,帮助用户更好地理解和使用界面。
需要注意的是,鼠标左键悬浮触发的适用范围和具体效果会因不同的应用场景和设计需求而有所差异。在设计中,应根据用户习惯和界面的功能需求来进行合理的悬浮触发设计,以提供更好的用户体验和操作便利性。
文章到此结束,如果本次分享的悬浮鼠标和鼠标悬浮球下载的问题解决了您的问题,那么我们由衷的感到高兴!