找回密码
 立即注册
Qt开源社区 门户 查看内容

Qt编程笔记一

2019-2-9 09:16| 发布者: admin| 查看: 1810| 评论: 0

摘要: 作者:前行中的Qt猪 QComboBox设置下拉列表的高度及宽度QScrollArea使用setWidget方法的误点QCombo ...
作者:前行中的Qt猪


  • QComboBox设置下拉列表的高度及宽度

  • QScrollArea使用setWidget方法的误点


QCombobox设置下拉框的高度、宽度

正常情况下QCombobox显示效果是这样的






我们可以使用下方代码设置下拉框下拉列表的宽度和高度

ui.comboBox->view()->setFixedWidth(ui.comboBox->width() + 50);
ui.comboBox->view()->setFixedHeight(150);





修改之后我们可以明显看到宽度变大了,高度缩小了。其实QComboBox类似一个QLineEdit和QListView的组合,从下方助手中我们可以看到通过view()方法获取到当前的QComboBox中的QAbstractItemView对象,然后设置其高度、宽度。







从助手中看到,我们不仅仅可以设置为ListView,也可以设置成tableView等等。例如使用如下代码,QComboBox的下拉框变成了table的形式,其他的以此类推,就不展开介绍了,有兴趣的小伙伴可以查看Qt助手文档自己尝试一下。

QTableView* tableView = new QTableView;
ui.comboBox->setView(tableView);







另一个需要了解的是我们可以通过设置下拉框显示条数来控制下拉框高度,比如设置下拉框最多显示8条,显示不下的则可以通过滚条滑动显示:
ui.comboBox->setMaxVisibleItems(8);



如果我们设置的条数超过目前添加的数据条数呢,结果是展示全部的条数:
ui.comboBox->setMaxVisibleItems(15);






Qt助手文档中详细介绍,简而言之:设置最大可见的item条数,且默认为10。






QScrollArea使用setWidget方法的误点

这是我之前编码的之后遇见的一个很容易犯错的地方,在对QScrollArea设置widget时,一定要让widget先完成布局,再进行设置,因为如果已经将widget设置对应的QScrollArea,那么之后再对widget进行布局将无效。

并且注意的是,如果有新的widget被设置到QScrollArea对象中,之前的widget对象将被销毁。所以要注意重新设置新的newWidget之后,不要再使用之前设置的oldWidget对象。

QWidget* oldWidget = new QWidget;
ui.scrollArea->setWidget(oldWidget);QWidget* newWidget = new QWidget;
ui.scrollArea->setWidget(newWidget);

// 这里我们再次使用oldWidget,发现程序中断;
// 其实这里oldWidget对象已经被销毁,
// 所以无法再次使用;

oldWidget->setObjectName("OldWidget");


详情见Qt助手文档中介绍:





CSDN 博客

前行中的小猪

https://blog.csdn.net/GoForwardToStep


-------------------------------------------------------------------------
我们尊重原创,也注重分享,如若侵权请联系qter@qter.org。
-------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了