Qt中QPushButton、QTabWidget等部件内容文字换行的解决方法(一定要写在源码里,写在翻译文件里不行,因为\n得不到转义)

最近在做基于Qt的应用项目,其中有一个按钮文字超长,需要换一行显示。从网上找到的建议都是将要显示的内容做成图片,然后将图片设置为该按钮的背景。但是这样做有一个很大的局限性,当需要更改内容文字的时候,需要重新生成图片。这样不仅提高了代码的维护成本,而且方法比较死板。经过本人探索发现,其实只需要设置QPushButton部件的text属性就可以实现换行。例如要显示的文字为:

|————————|

|         aaa         |

|         bbb         |

|————————|

可以设置text属性为aaa\nbbb

QTabWidget使标签上的文字换行显示比较麻烦一点,暂时没有在QtCreator上找到直接修改的办法。但是可以通过代码来修改。代码如下:

QString dualLine("aaa\nbbb");
    this->ui->tabWidget->setTabText(0, dualLine);

我在界面中直接拖拽了一个名为tabWidget的QTabWidget部件。要实现标签内容的多行显示,需要调用该部件的setTabText成员函数。第一个参数为目标Tab序号。这个序号可以通过QtCreator的设计界面,点击要修改的标签,在属性列表中找到currentIndex属性来得到;第二个参数为要设置的文字,这里dual为QString类型的变量,初始化的时候和更改QPushButton一样,直接添加转义字符“\n”就可以了。

就这么简单。赶快试试吧!

我使用的平台为Windows XP + QtCreator 2.2 + QtLib 4.7.3

http://blog.csdn.net/chaijunkun/article/details/6546704

时间: 2024-10-14 08:58:17

Qt中QPushButton、QTabWidget等部件内容文字换行的解决方法(一定要写在源码里,写在翻译文件里不行,因为\n得不到转义)的相关文章

jQuery中ajax的使用与缓存问题的解决方法

jQuery中ajax的使用与缓存问题的解决方法 1:GET访问 浏览器 认为 是等幂的就是 一个相同的URL 只有一个结果[相同是指 整个URL字符串完全匹配]所以 第二次访问的时候 如果 URL字符串没变化 浏览器是 直接拿出了第一次访问的结果 POST则 认为是一个 变动性 访问 (浏览器 认为 POST的提交 必定是 有改变的) 防止 GET 的 等幂 访问 就在URL后面加上 ?+new Date();,[总之就是使每次访问的URL字符串不一样的] 设计WEB页面的时候 也应该遵守这个

WPF拖动DataGrid滚动条时内容混乱的解决方法

WPF拖动DataGrid滚动条时内容混乱的解决方法 在WPF中,如果DataGrid里使用了模板列,当拖动滚动条时,往往会出现列表内容显示混乱的情况.解决方法就是在Binding的时候给UpdateSourceTrigger赋值. <Grid> <Grid.RowDefinitions> <RowDefinition Height="25"></RowDefinition> <RowDefinition></RowDe

C#提示:“在证书存储区中找不到清单签名证书”的解决方法

本文实例讲述了C#提示:"在证书存储区中找不到清单签名证书"的解决方法.分享给大家供大家参考.具体分析如下: 一.问题: 程序重新生成,提示错误:在证书存储区中找不到清单签名证书. 二.解决方法: 可能是之前部署的程序证书被我删掉了或是证书过期了,结果出现这个问题.解决方案如下: 方案1:右击项目属性―>签名―>为ClickOnce清单签名,将勾掉的选项去掉. 方案2:在签名中创建一个新的签名. 方案3:记事本打开相应的csproj文件,调整节点值.<SignMani

vue.js 中使用(...)运算符报错的解决方法

vue.js 中使用(...)运算符报错的解决方法 Syntax Error:Unexpected token(XX:X) }, computed:{ ...mapGetters([ 'pageSize' ]) }, 这个错误是在项目中,不识别es6的扩展运算符,解决办法(四步走)如下: 第一步:安装babel-plugin-transform-object-rest-spread cnpm install babel-plugin-transform-object-rest-spread 第二

universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法

在listview/gridview中使用UIL来display每个item的图片,当图片数量较多需要滑动滚动时会出现卡顿,而且加载过的图片再次上翻后依然会重复加载(显示设置好的加载中图片) 最近在使用UIL遇到了这个问题,相信这个问题许多使用UIL的人都碰到过 现在把解决方法贴出来给有同样问题的朋友做参考 先看下UIL的工作流程 在已经允许内存,存储卡缓存的前提下,当一个图片被请求display时,首先要判断图片是否缓存在内存中,如果false则尝试从存储卡读取,如果依然不存在最后才从网络地址

ajax回调函数中使用$(this)取不到对象的解决方法

如果在ajax的回调函数内使用$(this)的话,实践证明,是取不到任何对象的,需要的朋友可以参考下 $(".derek").each(function(){ $(this).click(function(){ var params = $(this).parent().serialize(); var obj=$(this).parent().siblings("div#caskContent"); var form=$(this).parent(); $.aja

Linux中npm出现npmlog找不到的解决方法

?Linux中npm出现npmlog找不到的解决方法 描述 今天在对nodejs项目进行服务器迁移的时,在新的linux服务器上输入 npm -v 命令后报 "cannot find module 'npmlog'-."的错误.找到的原因是拷贝过去的bin目录下的npm文件并没有链接到module目录下的npm-cli.js文件,所以导致在执行 npm -v 命令时,路径问题导致npmlog模块无法找到. 解决方法 解决的方法有两个,一个是删除bin目录下的npm文件,并用如下命令链接

Python3.4 获取百度网页源码并保存在本地文件中

最近学习python 版本 3.4 抓取网页源码并且保存在本地文件中 import urllib.request url='http://www.baidu.com' #上面的url一定要写明确,如果写成www.baidu.com,下一步就会报错. response=urllib.request.urlopen(url) #下一步获取html,但是是Byte格式的,我们要解码 html=response.read() html_str=html.decode('utf-8') #下面我们把get

spring加载过程中jar包加载不了,解决方法

当我们在开发spring项目时,一般会将jar包放到webInf/lib下,这样是myeclipse自动将jar包加载到tomcat中webapps下,但是当我们新建一个lib文件夹的情况下,我们add building Path时就会出错,这时候我们有个技巧供使用. 1.项目上点击右键搜索de,找到deployment assembly 目的就是将此处添加的jar包添加到系统webINF/lib路径下 来自为知笔记(Wiz) spring加载过程中jar包加载不了,解决方法