zoukankan      html  css  js  c++  java
  • paip.提升用户体验c++ 右键菜单以及socket接口

    paip.提升用户体验---c++  右键菜单以及socket接口


    作者Attilax ,  EMAIL:1466519819@qq.com 
    来源:attilax的专栏
    地址:http://blog.csdn.net/attilax






    主要流程:
    a.实现contextMenuEvent方法.当在window上右击时,自动调用这个方法...用来显示菜单..
    b.on_actionClear_triggered 用来触发事件操作.
    c.eventFilter用来区分左右的鼠标键..当右键点击菜单条款时候不反应,只能左的键有效.....
    d.注意事项..
    按道理 if (qApp->mouseButtons() == Qt::LeftButton)这个可以区分了.实际上不行..
    按道理   // act->installEventFilter( this ); 不个过滤器加的个QAction上走行。。实际上要加的个menu上了.
    e.只是实现孪api接口..还有个.http接口,js接口..腰实现了..


    源码下列的:

    void FormWdg::contextMenuEvent(QContextMenuEvent * event)


    {
    //show menu
        QCursor cur=this->cursor();


        QMenu *menu=new QMenu(this);
      menu->installEventFilter( this );
     QIcon myIcon("d:\\icon.jpg");
     //Act_Maxsize->setIcon(QIcon("Resources/logo.png"));


         QAction *act =   menu->addAction(myIcon,tr("删除"));
          // act->installEventFilter( this );


      connect(act,SIGNAL(triggered()),this,SLOT(on_actionClear_triggered( )));
      menu->addSeparator();
        menu->addAction(tr("新建"));


        menu->exec(cur.pos());
        //menu->exec(event->globalPos());




    }






     void   FormWdg::on_actionClear_triggered(  ){
         qDebug()<<"---on_actionClear_triggered---";
         qDebug()<<(qApp->mouseButtons() == Qt::LeftButton);
         //qDebug()<<qApp->mouseButtons().enum_type;
        // qDebug()<<Qt::MouseButtons


         if (qApp->mouseButtons() == Qt::LeftButton)
         {
       //  qApp->mouseButtons() ==
             QMessageBox::about(NULL, "About", "LeftButton click");
             return; }
         if (qApp->mouseButtons() == Qt::RightButton)
         {
             QMessageBox::about(NULL, "About", "RightButton click");
             return;
         }
         QMessageBox::about(NULL, "About", "no check");
         return;
    //QMessageBox::about(NULL, "About", "About this <font color='red'>application</font>");


     }
     
     
     
     bool FormWdg::eventFilter(QObject *obj, QEvent *event)
    {
      //  qDebug()<<"---eventFilter  >> eventFilter---";
        QMouseEvent *msEvt=static_cast<QMouseEvent *>(event);
        if(msEvt->type()==QEvent::MouseButtonPress)
        {
                 qDebug()<<"---eventFilter  >> MouseButtonPress---";
                     if(msEvt->button() == Qt::LeftButton)
                     {
                            qDebug()<<"---eventFilter  >> LeftButton check---";
                         //   return TRUE; // 吃掉了这个事件
                     }
                     if(msEvt->button() == Qt::RightButton                 )
                     {
                            qDebug()<<"---eventFilter  >> RightButton check---";
                         //   return TRUE; // 吃掉了这个事件
                     }
        }


     
    }




    参考:
    初识Qt Object 类(3) - 51CTO.COM.htm
    Qt?安装事件过滤器installEventFilter_kunyuan_新浪博客.htm
    Qt eventFilter无法过滤mouse事件 - 学无止境 - 博客频道 - CSDN.NET.htm
    Qt 鼠标专题 - 豆丁网.htm
    Qt QWidget添加右键菜单 - 坐看云起的日志 - 网易博客.htm
    QT 创建鼠标右键菜单 - 开源中国社区.htm
    【转】QT右键菜单、右键下拉菜单、各控件响应右键菜单方法简介(持续添加更新中...)_龙腾9吴天的空间_百度空间.htm
    qt trigger - neverland的日志 - 网易博客.htm
    qt的右键扩展,继承contextMenuEvent - 新闻中心 - 赛迪网.htm
    Qt学习之路(13)  菜单和工具条(续) - 豆子空间 - 51CTO技术博客.htm
    Qt学习之路(20)  事件接收与忽略 - 豆子空间 - 51CTO技术博客.htm
  • 相关阅读:
    java基础2(Map)
    java基础1
    数据类型
    入门&常量&变量
    spark 机器学习 朴素贝叶斯 原理(一)
    spark 机器学习 knn 代码实现(二)
    spark 机器学习 knn原理(一)
    spark 机器学习 ALS原理(一)
    数学符号表及读法
    spark 机器学习基础 数据类型
  • 原文地址:https://www.cnblogs.com/attilax/p/15199510.html
Copyright © 2011-2022 走看看