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

Qt如何屏蔽工具栏(QToolBar)自动折叠功能

最近发现Qt上工具栏一行放不下的时候,会自动折叠起来。当用户点击展开功能的小三角按钮时,工具栏会展开成多行。这个功能本身没什么问题,但是当工具栏展开的时候,鼠标光标一旦不小心移动到了工具栏外面,这时候,工具栏又会自动折叠上。这个功能就很烦人,经常遇到的一种情况就是用户展开了工具栏,但是还没点击具体的工具栏按钮的时候,由于鼠标光标不小心滑到工具栏外面了,结果工具栏自动折叠起来了。本来以为这是个修改下标志位比较好解决的问题,然后网上搜了一圈之后,发现好像没有遇到同样的问题。没办法,花了一点时间看了一下QToolBar的实现代码。发现工具栏折叠功能是在QEvent::Leave这个事件里处理的。知道原理后,可以新建一个类然后重写QToolBar的event方法。

具体代码如下:

#include "mytoolbar.h"

MyToolBar::MyToolBar(QWidget *parent) : QToolBar(parent)
{

}

bool MyToolBar::event(QEvent* e){
    if(e->type() == QEvent::Leave){
        if(isActiveWindow()){
            //当前焦点在工具栏,直接return true不做任何处理,不自动折叠任务栏
            return true;
        }else{
            //当前焦点不在工具栏,说明用户已经点击过工具栏按钮。调用默认的事件处理函数,鼠标光标滑开时自动折叠工具栏
            return QToolBar::event(e);
        }
    }
    return QToolBar::event(e);
}


http://www.kler.cn/a/408164.html

相关文章:

  • OCR-free Document Understanding Transformer
  • HDR视频技术之三:色度学与颜色空间
  • 微前端基础知识入门篇(二)
  • 蚁群算法(Ant Colony Optimization, ACO)
  • 大公司如何实现打印机共享的?如何对打印机进行管控或者工号登录后进行打印?异地打印机共享的如何实现可以帮助用户在不同地理位置使用同一台打印机完成打印任务?
  • (十一)Python字符串常用操作
  • 嵌入式软件工程师岗位细分全景图
  • 嵌入式开发工程师面试题 - 2024/11/24
  • MATLAB的addpath和rmpath函数增加或删除路径
  • flink学习(6)——自定义source和kafka
  • CCF认证202406-02 | 矩阵重塑(其二)
  • 计算机网络socket编程(6)_TCP实网络编程现 Command_server
  • node报错:cb.apply is not a function
  • 附录 9A 计量经济学实验室#5
  • 二号交叉学科楼的英文表达是什么?No. 2 Interdisciplinary Research Building
  • 电子应用设计方案-22:智能门禁系统方案设计
  • React 表单Form 中的 useForm
  • Linux内核
  • 创建可重用React组件的实用指南
  • 算法模板2:位运算+离散化+区间合并
  • 【Qt流式布局改造支持任意位置插入和删除】
  • CoAP 协议介绍:特性、应用与优劣势
  • 大语言模型---RewardBench 介绍;RewardBench 的主要功能;适用场景
  • 使用Python编写一个简单的网页爬虫,从网站抓取标题和内容。
  • windows C#-异步编程模型(下)
  • 使用go实现流式输出