当前位置: 首页 > news >正文

东莞微网站建设多少钱单位网站建设做到哪个科目

东莞微网站建设多少钱,单位网站建设做到哪个科目,app大全,网页微信版官方下载在图形界面框架中的事件都是先由视图进行接收#xff0c;然后传递给场景#xff0c;再由场景传递给图形项。通过键盘处理的话#xff0c;需要设置焦点#xff0c;在QGraphicsScene中使用setFoucesItem#xff08;#xff09;函数可以设置焦点#xff0c;或者图形项使用s…在图形界面框架中的事件都是先由视图进行接收然后传递给场景再由场景传递给图形项。通过键盘处理的话需要设置焦点在QGraphicsScene中使用setFoucesItem函数可以设置焦点或者图形项使用setFouce获取焦点。 默认的如果场景中没有获取焦点那么所有的键盘事件将会被丢弃。如果场景中的setFouce函数或图形项获取了焦点那么场景也会自动获取焦点。 对于鼠标悬停效果QGraphicsScene会调度悬停事件。如果一个图形项可以接收悬停事件那么当鼠标进入它的区域之中时它就会收到一个GraphicsSceneHoverEnter事件。如果鼠标继续在图形项的区域之中进行移动那么QGraphicsScene就会向该图形项发送GraphicsSceneHoverMove事件。当鼠标离开图形项的区域时它将会收到一个GraphicsSceneHoverLeave事件。图形项默认是无法接收悬停事件的可 以使用QGraphicsItem类的setAcceptHoverEvents()函数使图形项可以接收悬停事件。 所有的鼠标事件都会传递到当前鼠标抓取的图形项一个图形项如果可以接收鼠标事件默认可以而且鼠标在它的上面被按下那么它就会成为场景的鼠标抓取的图形项 事件主要分为 鼠标事件悬停事件键盘事件拖拽事件上下文菜单事件由于内容比较多这里就单个单个介绍。 鼠标事件  mouseDoubleClickEvent鼠标双击事件mouseMoveEvent鼠标移动事件mousePressEvent鼠标点击事件MouseReleaseEvent鼠标松开事件 例子 一个矩形项鼠标单机的话为红色双击的话为蓝色移动的话为绿色松开的话为黄色 默认为黑色 MyItem.h文件  #ifndef MYITEM_H #define MYITEM_H #includeQGraphicsItem #includeQGraphicsScene #includeQGraphicsView #includeQMouseEvent class MyItem:public QGraphicsItem { public:MyItem();QRectF boundingRect() const;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget );void mouseMoveEvent(QGraphicsSceneMouseEvent *event) ;//鼠标移动事件void mousePressEvent(QGraphicsSceneMouseEvent *event) ;//鼠标点击事件void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) ;//鼠标松开事件void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) ;//鼠标双击事件 private:QColor color;//颜色 };#endif // MYITEM_H MyItem.cpp文件  每次执行完之后要使用updata更新一下数据不然会卡顿。版本为Qt5.9.9 #include myitem.hMyItem::MyItem() {colorQColor(Qt::black);//默认为黑色} QRectF MyItem::boundingRect() const {qreal penwidget1;return QRectF(-penwidget/2,-penwidget/2,100penwidget,100penwidget); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ) {painter-setBrush(color);painter-drawRect(0,0,100,100);//画矩形 } void MyItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) //鼠标移动事件 {colorQColor(Qt::green);update(); } void MyItem::mousePressEvent(QGraphicsSceneMouseEvent *event) //鼠标点击事件 {setFocus();//设置焦点colorQColor(Qt::red);update(); } void MyItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) //鼠标松开事件 {colorQColor(Qt::yellow);update(); } void MyItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) //鼠标双击事件 {colorQColor(Qt::blue);update(); }main文件 #include widget.h #include myitem.h #include QApplication #includeQGraphicsScene #includeQGraphicsView int main(int argc, char *argv[]) {QApplication a(argc, argv);QGraphicsScene scene(-200,-200,400,400); //场景MyItem item; //项scene.addItem(item);QGraphicsView view; //视图view.setScene(scene);view.show();return a.exec(); } 运行结果 默认                  单击                     松开                   双击            鼠标移动 停靠事件 hoverEnterEvent()悬停输入事件hoverLeaveEvent()悬停离开事件hoverMoveEvent()悬停移动事件默认情况下不会接收悬停事件需要使用setAcceptHoverEvents开启接收悬停事件。 例子 默认为黑色悬停离开为蓝色悬停移动为绿色. MyItem.h文件  #ifndef MYITEM_H #define MYITEM_H #includeQGraphicsItem #includeQGraphicsScene #includeQGraphicsView #includeQHoverEvent class MyItem:public QGraphicsItem { public:MyItem();QRectF boundingRect() const;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget );void hoverMoveEvent(QGraphicsSceneHoverEvent *event) ;//悬停移动void hoverEnterEvent(QGraphicsSceneHoverEvent *event) ;//悬停进入void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) ;//悬停离开 private:QColor color;//颜色 };#endif // MYITEM_H MyItem.cpp #include myitem.hMyItem::MyItem() {colorQColor(Qt::black);//默认为黑色setAcceptHoverEvents(true);//开启接收悬停} QRectF MyItem::boundingRect() const {qreal penwidget1;return QRectF(-penwidget/2,-penwidget/2,100penwidget,100penwidget); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ) {painter-setBrush(color);painter-drawRect(0,0,100,100);//画矩形 } void MyItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) //悬停移动 {colorQColor(Qt::green);//绿色update(); } void MyItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) //悬停输入 { } void MyItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) //悬停离开 {colorQColor(Qt::blue);//蓝色update(); }int main(int argc, char *argv[]) {QApplication a(argc, argv);QGraphicsScene scene(-200,-200,400,400);MyItem item;scene.addItem(item);QGraphicsView view;view.setScene(scene);view.show();return a.exec(); } 键盘事件 keyPressEvent键盘点击keyReleaseEvent键盘松开 使用键盘事件需要注意的事项 使用键盘事件的控件需要获取焦点QGraphicsItem的话使用 setFocus开启需要使用setFlag函数开启标志。不开启这个不能使用是一个坑enum QGraphicsItemGraphicsItemFlag这几个是常见的想要更加了解的话可以翻看官方文档 QGraphicsItem::ItemIsMovable支持使用鼠标进行交互式移动。通过单击该项目然后拖动该项目将与鼠标光标一起移动。QGraphicsItem::ItemIsSelectable支持选择。启用此功能将启用 setSelected 来切换项目的选择。QGraphicsItem::ItemIsFocusable该项支持键盘输入焦点即它是输入项。启用此标志将允许项目接受焦点QGraphicsItem::ItemClipsToShape项目将剪辑到其自己的形状。该项目无法绘制或接收鼠标、平板电脑、拖放或将事件悬停在其形状之外。默认情况下处于禁用状态QGraphicsItem::ItemClipsChildrenToShap项目将其所有后代的绘画剪辑成自己的形状。作为此项目的直接或间接子项的项不能在此项的形状之外绘制。QGraphicsItem::ItemIgnoresTransformations项目忽略继承的变换此标志可用于使文本标签项保持水平且不缩放因此在转换视图时它们仍可读。开启键盘的话需要使用setFlagQGraphicsItem::ItemIsFocusable 例子使用鼠标选取项然后使用键盘的上下左右来移动矩形项每次移动10 MyItem.h #ifndef MYITEM_H #define MYITEM_H #includeQGraphicsItem #includeQGraphicsScene #includeQGraphicsView #includeQKeyEvent #includeQMouseEvent class MyItem:public QGraphicsItem { public:MyItem();QRectF boundingRect() const;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget );void keyPressEvent(QKeyEvent *event) ;//键盘点击void mousePressEvent(QGraphicsSceneMouseEvent *event);//鼠标点击事件 private:QColor color;//颜色 };#endif // MYITEM_H MyItem.cpp #include myitem.hMyItem::MyItem() {colorQColor(Qt::black);//默认为黑色this-setFlag(QGraphicsItem::ItemIsFocusable);//设置标志 } QRectF MyItem::boundingRect() const {qreal penwidget1;return QRectF(-penwidget/2,-penwidget/2,100penwidget,100penwidget); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ) {painter-setBrush(color);painter-drawRect(0,0,100,100);//画矩形 } void MyItem::keyPressEvent(QKeyEvent *event) //键盘点击 {if(event-key()Qt::Key_Up)//向上{moveBy(0,-10);}else if(event-key()Qt::Key_Down)//向下{moveBy(0,10);}else if(event-key()Qt::Key_Left)//向左{moveBy(-10,0);}else if(event-key()Qt::Key_Right)//向右{moveBy(10,0);}else{} } void MyItem::mousePressEvent(QGraphicsSceneMouseEvent *event) {setFocus();//设置焦点 }拖拽事件 dragEnterEvent拖动输入事件dragLeaveEvent拖拽离开事件dragMoveEvent拖动移动事件dragEvent拖拽事件 使用时需要注意的事项 默认不会开启拖拽需要使用  setAcceptDropstrue开启想要实现拖动控件的话还要开启 setFlag(QGraphicsItem::ItemIsMovable)开启这两个函数即可实现拖拽控件 //MyItem.h文件#ifndef MYITEM_H #define MYITEM_H #includeQGraphicsItem #includeQGraphicsScene #includeQGraphicsView #includeQDropEvent class MyItem:public QGraphicsItem { public:MyItem();QRectF boundingRect() const;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ); private:QColor color;//颜色 };#endif // MYITEM_H//MyItem.cpp文件#include myitem.hMyItem::MyItem() {colorQColor(Qt::black);//默认为黑色this-setFlag(QGraphicsItem::ItemIsMovable);setAcceptDrops(true);//开启拖拽 } QRectF MyItem::boundingRect() const {qreal penwidget1;return QRectF(-penwidget/2,-penwidget/2,100penwidget,100penwidget); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ) {painter-setBrush(color);painter-drawRect(0,0,100,100);//画矩形 } 可以使用上面的几个事件实现你想要的结果这里就不详细赘述。 上下文菜单事件 通俗的讲就是 你右键一个项会弹出一些选择 contextMenuEvent重新实现此事件处理程序以处理上下文菜单事件 void MyItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {QMenu menu;//创建一个菜单QAction *removeAction menu.addAction(Remove);//创建QAction创建行为 ...//可以有多个menu.exec(event-screenPos());//显示menu设置在上下文菜单时鼠标光标在屏幕坐标中的位置connect();//使用connect()来连接对应的处理结果} 例子 MyItem.h #ifndef MYITEM_H #define MYITEM_H #includeQGraphicsItem #includeQGraphicsScene #includeQGraphicsView #includeQDropEvent #includeQDebug class MyItem:public QGraphicsItem { public:MyItem();QRectF boundingRect() const;void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget );void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;//上下文事件 private:QColor color;//颜色 };#endif // MYITEM_HMyItem.cpp #include myitem.h#include QGraphicsSceneContextMenuEvent #include QMenuMyItem::MyItem() {colorQColor(Qt::black);//默认为黑色this-setFlag(QGraphicsItem::ItemIsMovable);setAcceptDrops(true);//开启拖拽 } QRectF MyItem::boundingRect() const {qreal penwidget1;return QRectF(-penwidget/2,-penwidget/2,100penwidget,100penwidget); } void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget ) {painter-setBrush(color);painter-drawRect(0,0,100,100);//画矩形 }void MyItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) {QMenu menu;QAction *A menu.addAction(A);QAction *B menu.addAction(B);QAction *C menu.addAction(C);QAction *D menu.addAction(D);QObject::connect(A,QAction::triggered,[](){qDebug()A;});QObject::connect(B,QAction::triggered,[](){qDebug()B;});QObject::connect(C,QAction::triggered,[](){qDebug()C;});QObject::connect(D,QAction::triggered,[](){qDebug()D;});menu.exec(event-screenPos()); }main函数 int main(int argc, char *argv[]) {QApplication a(argc, argv);QGraphicsScene scene(-200,-200,400,400);MyItem item;scene.addItem(item);QGraphicsView view;view.setScene(scene);view.show();return a.exec(); } 运行效果 右键点击该控件 分别点击ABCD执行相应的输出 参考文档 QGraphicsItem Class | Qt Widgets 5.15.13
http://www.hkea.cn/news/14392755/

相关文章:

  • 做网站提升公司形象施工企业跨专业接工作是否有效
  • 国外素材网站深圳龙岗发布通告
  • 网站过期怎么找回来厦门门户网站建设
  • php 移动网站开发wordpress关闭自适应
  • 西部数码成品网站电子政务网站建设的步骤一般为
  • 人寿保险网站装修公司的口碑排名
  • 公司网站开发教程做的最好的视频教学网站
  • 网站建设图片编辑网络架构图
  • 网站制作公司服务贵州华瑞网站建设有限公司
  • 网站预订模板怎么做石家庄市建设厅官网
  • 网站建设 考核指标soe搜索优化
  • 网站建设流程有公众号网页版
  • 网站服务器是主机吗自己怎样在百度上做推广
  • 建站程序asp如何建设网站视频
  • 海口网站建设方案网站怎么做反爬虫
  • 周口城乡建设局网站漳州手机网站建设
  • 网站建设一般是用哪个软件wordpress 搭建教程
  • 网站维护收费标准女生学建筑工程技术就业前景
  • 行知智网站建设快速网站备案多少钱
  • 如何建立自己网站教程誓做中国最大钓鱼网站
  • 无锡网站设计多少钱怎么样销售关于网站建设
  • 山东建设人才网站wordpress手机上导航俩字
  • 杭州信贷网站制作行业网站建设公司
  • 德阳网站建设ghxhwl如何自建网站做外贸
  • 账号交易网站数据库应该怎么做东莞招聘网站
  • 网站开发学什么数据库龙岩到永定汽车时刻表
  • 做网站的设计理念上海中国建设银行网站
  • 2019年做网站还有机会吗自己做剧本网站
  • 学习做网站可以吗网站集约化建设情况
  • 微博问答网站开发看室内设计案例的网站