• 9598阅读
  • 7回复

[提问]动态创建PushButton时,怎么让按钮上的文本全部显示出来 [复制链接]

上一主题 下一主题
离线xsirfff
 

只看楼主 倒序阅读 楼主  发表于: 2015-01-19
动态创建PushButton时,如果按钮上的文字过多,则显示不全。怎么让按钮上的文本全部显示出来?
使用代码控制,非使用设计器。

多谢!



在线liudianwu

只看该作者 1楼 发表于: 2015-01-19
用布局来控制界面
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线xsirfff

只看该作者 2楼 发表于: 2015-01-19
回 liudianwu 的帖子
liudianwu:用布局来控制界面 (2015-01-19 19:48) 

谢谢您的回复!
如果使用代码该怎么做?
离线realfan

只看该作者 3楼 发表于: 2015-01-19
回 xsirfff 的帖子
xsirfff:谢谢您的回复!
如果使用代码该怎么做? (2015-01-19 20:40) 

代码就是将QPushButton放到各种QLayout中
如:
QPushButton  * btn = new QPushButton(....);
QHBoxLayout * hbl = new QHBoxLayout;
hbl->addWidget(btn);
....
离线xsirfff

只看该作者 4楼 发表于: 2015-01-20
感谢版主回复!
但这样还是不能圆满解决。比如下图:

以上九个按钮位于一个Qhboxlayout;后边按钮上文字比前边的多,许多都没有显示出来。
当将窗口拖放大一些,各个按钮上的文本就显示得多一些,如下图,是窗口拖大后按钮上的文字完全显示出来的情况:

我的本意是:在程序中动态创建一组按钮,按钮上的文本来自一个文本数据(字符数不相等),要求每个按钮都位于一个标签(或者某个固定的区域)内,比如上图的红色矩形里边,一行显示不完全部按钮则自动另起一行;同时按钮上的文本必须全部显示出来
Qpushbutton对象似乎也没有一个属性,可以让其上的文本全部显示出来。
看到有依据字体字号取文本长度的文章,通过QApplication::fontMetrics ()或者QWidget::fontMetrics ()可以取得。这样是可以的,但麻烦些。
请问是否还有其他思路来解决吗?

请版主指点!多谢!




离线roywillow

只看该作者 5楼 发表于: 2015-01-20
你需要参考qt官方的flow layout示例,这个可以实现组件的自动换行
你可能需要修改一下button的size policy,让它努力去占用尽可能多的空间
想让组件限制在窗口内的某个区域需要根据这个区域的设计方式来确定
如果说这个区域始终距离layout对应的widget边界固定值,可以对这个layout设置contents margin来预留出空间,但是不要指望layout能给你显示出一个红框框框来,layout不是可见的
如果说这个区域还会受其他组件的影响,建议把这个区域具体化为一个新的widget,在这个widget里布置button,部署layout
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线xsirfff

只看该作者 6楼 发表于: 2015-01-21
多谢两位回复!
离线wisteria

只看该作者 7楼 发表于: 2015-01-21
我是新手,学习了,希望通过这个论坛,我能很快入门。
Winter in my heart
快速回复
限100 字节
 
上一个 下一个