五个按钮布局排版的问题?

中才德创 2011-10-28 10:26:28
有时,显示5个 [ ] [ ] [ ] [ ] [ ]
有时,显示4个 [ ] [ ] [ ] [ ]
有时,显示3个 [ ] [ ] [ ]

用布局来做,代码如后面的。发现一个问题,m_pbuttonsLayout->addStretch()这根弹簧始终无法事先淡出布局。

于是,等多次执行之后,五个按钮的前面,居然多出了一根弹簧,看起来最前面留有空白。


这如何改善?

/*
* 函数介绍:按钮布局调整
* 输入参数:enElementId,按钮类型
* 输出参数:无
* 返回值 :无
*/
void SMSUIMainDlg::adjustButtonsLayout(SMS_BUTTONBOX_TYPE enIndex)
{
qDebug ("%s: %s: Entered", __FILE__, __FUNCTION__);

if ((NULL!=m_pbuttonDelete)
&& (NULL!=m_pbuttonAddCon)
&& (NULL!=m_pbuttonForward)
&& (NULL!=m_pbuttonReply)
&& (NULL!=m_pbuttonNew)
&& (NULL!=m_pbuttonsLayout)
)
{
//淡出布局
m_pbuttonDelete->setParent(NULL);
m_pbuttonAddCon->setParent(NULL);
m_pbuttonForward->setParent(NULL);
m_pbuttonReply->setParent(NULL);
m_pbuttonNew->setParent(NULL);

m_pbuttonsLayout->setSpacing(7);
m_pbuttonsLayout->setContentsMargins(0, 0, 0, 0);

switch (enIndex)
{
case SMS_BUTTON_INBOX:
//加入布局
m_pbuttonsLayout->addWidget(m_pbuttonDelete);
m_pbuttonsLayout->addWidget(m_pbuttonAddCon);
m_pbuttonsLayout->addWidget(m_pbuttonForward);
m_pbuttonsLayout->addWidget(m_pbuttonReply);
m_pbuttonsLayout->addWidget(m_pbuttonNew);
break;

case SMS_BUTTON_SENT:
//加入布局
m_pbuttonsLayout->addWidget(m_pbuttonDelete);
m_pbuttonsLayout->addStretch();
m_pbuttonsLayout->addWidget(m_pbuttonAddCon);
m_pbuttonsLayout->addWidget(m_pbuttonForward);
m_pbuttonsLayout->addWidget(m_pbuttonNew);
break;

case SMS_BUTTON_DRAFT:
//加入布局
m_pbuttonsLayout->addWidget(m_pbuttonDelete);
m_pbuttonsLayout->addStretch();
m_pbuttonsLayout->addWidget(m_pbuttonAddCon);
m_pbuttonsLayout->addWidget(m_pbuttonNew);
break;

default :
break;
}
}

qDebug ("%s: %s: Exit", __FILE__, __FUNCTION__);
}
...全文
281 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
noodle123 2011-11-29
  • 打赏
  • 举报
回复
可能QT的布局太深奥了吧,感觉还没有C++Builder用着方便。
中才德创 2011-10-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiaoli96123 的回复:]
布局何不自己用算法实现,就不用依赖弹簧了。
[/Quote]主要是多系统,还有希望自适应。

有没有对m_pbuttonsLayout这个layout进行clear的动作,然后就可以不断addWidget了?
xiaoli96123 2011-10-28
  • 打赏
  • 举报
回复
布局何不自己用算法实现,就不用依赖弹簧了。
中才德创 2011-10-28
  • 打赏
  • 举报
回复
有时,显示5个 [ ] [ ] [ ] [ ] [ ]
有时,显示4个 [ ] - [ ] [ ] [ ]
有时,显示3个 [ ] - - [ ] [ ]

21,489

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧