• 6303阅读
  • 7回复

[提问]QPushButton长和高度能否关联 [复制链接]

上一主题 下一主题
离线qazaq408
 

只看楼主 倒序阅读 楼主  发表于: 2014-11-28
比如QPushButton* button。他位于一个layout内,被放到y一个父窗体上
那这个button的长度和宽度,我想让他在父窗体被各种拉伸的时候,长度和宽度都相等(等于父窗体长或高去最小值)
也就是始终保证这个button是个正方形。

我用QSizePolicy设施水平和垂直拉伸因子都为1,但拉伸的时候不总是个正方形,

我还试了用resize()函数,resize(width(),weigth()),但拉伸的时候各种变形

用setFixedSize()可以设置他为正方形,但父窗体拉伸的时候他大小不变

求支招
离线彩阳

只看该作者 1楼 发表于: 2014-11-28
可以,设置eventFilter,重写resizeEvent()。
上海Qt开发联盟,热忱地欢迎你的加入!
离线qazaq408

只看该作者 2楼 发表于: 2014-11-29
回 彩阳 的帖子
彩阳:
可以,设置eventFilter,重写resizeEvent()。

饿谢谢
是这样的,我自己写了一个zButton,派生自 QPushButton,然后我在上面放了图片,然后我想图片随着zButton拉伸的时候同时变大(就是图片始终充满整个zButton)

zButton* button;
button->setIcon(QIcon(:"images/123.png"));  //书上说这叫资源机智。。
图片的显示没有问题,
然后为了拉伸图片,我重写了QPushButton的resizeEvent()
void resizeEvent(QResizeEvent* event)
{
   QSize button_size = event->size();  //获取拉伸后button的大小
    setIconSize(button_size);  //设置图片大小为button大小
}
编译通过

然后我点击这个button的时候图片没有任何变化,还是位于按钮做中间,没有被拉伸

我想问下,怎么让这个图片可以和button一起被放大缩小
离线roywillow

只看该作者 3楼 发表于: 2014-11-30
QIcon(:"images/123.png")
你确定这么写编译器能通过……?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线qazaq408

只看该作者 4楼 发表于: 2014-12-01
回 roywillow 的帖子
roywillow:QIcon(:"images/123.png")
你确定这么写编译器能通过……? (2014-11-30 19:19) 

编译通过了,。。。。还运行出来了。。
我照书上抄的,哪里不对么?
离线roywillow

只看该作者 5楼 发表于: 2014-12-01
回 qazaq408 的帖子
qazaq408:编译通过了,。。。。还运行出来了。。
我照书上抄的,哪里不对么? (2014-12-01 14:58) 

哪本书能写成这样啊……
资源文件的引用是
QIcon(":/images/123.png")
这种形式啊
不过这个应该与你的问题无关
你的QIcon没有button那么大,自然你就算setIconSize了也没用啊,就是“臣妾办不到啊”的意思
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线qazaq408

只看该作者 6楼 发表于: 2014-12-01
回 roywillow 的帖子
roywillow:哪本书能写成这样啊……
资源文件的引用是
QIcon(":/images/123.png")
这种形式啊
....... (2014-12-01 18:18) 

那我想问下
一个QPushButton用layout安装到窗体QWidget上

1拉伸父窗体导致QPushButton变化是什么时间,我尝试重写了resizeEvent()和paintEvent()事件发现都不行,assistant 上找半天也没找到,网上都是一个答案各种黏贴复制..
2如何设定这个QPushButton长和宽相等?assistant上我值找到返回width()和height(),还有设置宽 , 高的最大最小值,还有size的,唯独找不到单独设置高和宽的
离线roywillow

只看该作者 7楼 发表于: 2014-12-01
回 qazaq408 的帖子
qazaq408:那我想问下
一个QPushButton用layout安装到窗体QWidget上
1拉伸父窗体导致QPushButton变化是什么时间,我尝试重写了resizeEvent()和paintEvent()事件发现都不行,assistant 上找半天也没找到,网上都是一个答案各种黏贴复制..
....... (2014-12-01 21:32) 

resizeEvent的发生应该是在大小已经改变了的时候产生的吧,在resizeEvent中改变大小会导致无限循环,文档中说过不能这么做
确实没有单独设置的,只能自己去setGeometry(),把位置和大小全部传入
我觉得你好像需要的是QToolButton,只显示图标,不显示文字……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个