哈尔滨网站建设哪家好而且价格不贵,网站改版 被百度k,如何免费注册网址,建设网站要买服务器最近发现Qt上工具栏一行放不下的时候#xff0c;会自动折叠起来。当用户点击展开功能的小三角按钮时#xff0c;工具栏会展开成多行。这个功能本身没什么问题#xff0c;但是当工具栏展开的时候#xff0c;鼠标光标一旦不小心移动到了工具栏外面#xff0c;这时候#xf…最近发现Qt上工具栏一行放不下的时候会自动折叠起来。当用户点击展开功能的小三角按钮时工具栏会展开成多行。这个功能本身没什么问题但是当工具栏展开的时候鼠标光标一旦不小心移动到了工具栏外面这时候工具栏又会自动折叠上。这个功能就很烦人经常遇到的一种情况就是用户展开了工具栏但是还没点击具体的工具栏按钮的时候由于鼠标光标不小心滑到工具栏外面了结果工具栏自动折叠起来了。本来以为这是个修改下标志位比较好解决的问题然后网上搜了一圈之后发现好像没有遇到同样的问题。没办法花了一点时间看了一下QToolBar的实现代码。发现工具栏折叠功能是在QEvent::Leave这个事件里处理的。知道原理后可以新建一个类然后重写QToolBar的event方法。
具体代码如下
#include mytoolbar.hMyToolBar::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);
}