zoukankan      html  css  js  c++  java
  • 自定义按键响应QComboBox选择选项的方法

    最近做一个Qt项目,界面中有一个QComboBox,这里称为combobox。要求不用鼠标操作,用按键,在combobox未弹出菜单的情况,按上下左右键是选择另外widget,在弹出菜单的情况下,是选择选项。

    因为要求界面中的各个widget必须要能够按照自己定义的顺序被选取(按上下左右键),所以只能自己重写按键响应,于是我给combobox安装了过滤器,自己对combobox进行按键响应。

    有两个难点:

    1.如果判断combobox是弹出了菜单还是未弹出菜单的状态

    2.如果在弹出菜单的情况下,如何在对上下移动做按键响应(也就是高亮指定的项)


    1.在多次试验的情况我发现combobox->view()->isVisable()可以用来判断是否是弹出了菜单。


    2.试了很多种办法都没法解决。

      最后在查阅了源代码的情况下,发现弹出的菜单是由combobox中的view来管理的。而view有一个selectionModel是用来管理选项的高亮的。终于找到了正确的使用方法。

    combobox->view()->selectionModel()->setCurrentIndex(combobox->model()->index(index,combobox->modelColumn(),combobox->rootModelIndex()),QItemSelectionModel::ClearAndSelect);

    也许还有更好的办法,或者是我走入了死胡同,暂时先这么着吧。


    补充说明,查看源代码之后,comboBox自己默认的按键响应里会响应QEvent::ShortCutOverride这个事件,当按下ENTER,RETURN键时会响应此事件执行hidePopup()

  • 相关阅读:
    CF687D Dividing Kingdom II
    图论——EK算法
    P6082 [JSOI2015]salesman
    联合权值——树上问题2014noip
    P2071 座位安排——二分图最大匹配
    匈牙利优化时间戳的正确性
    P1541 乌龟棋——线性动规
    P1858 多人背包
    P3558 [POI2013]BAJ-Bytecomputer——线性动归
    P2303 [SDOI2012] Longge 的问题
  • 原文地址:https://www.cnblogs.com/cxjchen/p/3018490.html
Copyright © 2011-2022 走看看