飞道的博客

qt 工具栏下加文字

287人阅读  评论(0)

我擦后面看了一下Qt自带这种样式的感觉自己SB了:

接口为:

ui.toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);

后面的都是废话,不用再看了。

在进行软件界面设计时,用户反应Qt默认的工具栏不是太美观,希望能在工具栏下面加上文字这样比较直观,效果图如下:

思路

去看看qt默认的Action不支持这样的样式,之后想自己定制一下。经过研究得到大概的思路:将Action替换为QToolButton;需要考虑的是有些Action不在本模块new出来,即在复用其他已经有的模块功能时,其他模块将Action封装到模块中了,需要通过GetxxxAction来获取Action,然后将Action加在工具栏上,之后发现QToolButton有一个setDefaultAction接口可以将Action和ToolButton关联起来,这样好像这个就不是问题了。还有一个问题就是qt一般加Action都在QtDesigner进行添加这样比较方便,而且菜单栏里面用的Action和工具栏里面用的是同一个,现在菜单栏里面用Action,工具栏中用ToolButton,那很多代码都要写两遍,如信号槽,代码会变得很冗余。

实现

确定了思路就去实现,具体的方法为:Action的添加跟平时一样在QtDesigner中新建并添加到菜单栏中,之后工具栏中不要添加。在代码中添加InitToolbar函数里面的实现为

QToolButton* open_tool_bar = new QToolButton();
open_tool_bar->setDefaultAction(ui.actionOpenFile);
open_tool_bar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui.toolBar->addWidget(open_tool_bar);

QToolButton* save_tool_bar = new QToolButton();
save_tool_bar->setDefaultAction(ui.actionSaveFile);
save_tool_bar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui.toolBar->addWidget(save_tool_bar);

ui.toolBar->addSeparator();

...

 这样做的好处是屏蔽工具栏和菜单栏使用不同的对象带来的差异性,其他地方只用管Action就好,不用管ToolButton。这是我发现代码量最小,最好实现,而且还达到需求的方式。最后实现效果为:

效果还是不错的。 

 


转载:https://blog.csdn.net/tawufa/article/details/104620784
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场