• 12679阅读
  • 5回复

[提问]QTableWidget 怎么设置各列不同的宽度? [复制链接]

上一主题 下一主题
离线evilroach
 

只看楼主 倒序阅读 楼主  发表于: 2019-06-07
我目前在需求验证阶段,需求会频繁变动,所以不必、不能、不宜靠编程来让各列根据内容多寡自动设置宽度。

Qt Creator 能否让我在可视化的设计界面上,为 QTableWidget 的各个列设置不同的宽度?
我找了几天,只有个属性叫 horizontalHeaderDefaultSectionSize 可以设置 QTableWidget 的列宽,但是统一的列宽,一设置,就改掉所有列的宽度。
我需要为每列设置不同的宽度,表中的内容是设计时已经手工录入的。

另外,很多文档、教程都提到一个叫 Qt Designer 的玩意, 让我们能用比 Creator 更精细的方式设计UI,但是我怎么也找不到。
是它已经被合并到 Creator 了吗? 是那些文档、教程都过时了吗? 但是我所看到的 Creator 也并没有增强啊?
我也尝试在命令行界面输入 designer 命令,得到的错误提示也奇怪:
designer: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/designer': No such file or directory
为什么里面有个qt4?我安装的是qt-5.12.3,并没有安装过qt4啊?

恭祝答者端午安康,如蒙提点,感激不尽!
离线20091001753

只看该作者 1楼 发表于: 2019-06-07
为不同的列,设置列宽,只能通过代码。
ui->treeWidget->setColumnWidth(0,50);

另外,你所说的,让 Qt 根据内容的多少,自动设置各列的宽度,代码是:
ui->treewidget->header()->resizeSections(QHeaderView::ResizeToContents);

如果你的内容,是设计UI的时候已经预制好的,那么自动设置列宽应该更合适才对。
因为不管你 UI 的内容,在设计的时候怎么改。启动后都是最适宜的宽度。
(づ ̄ 3 ̄)づ
离线wocan23

只看该作者 2楼 发表于: 2019-06-07
回 20091001753 的帖子
20091001753:为不同的列,设置列宽,只能通过代码。
ui->treeWidget->setColumnWidth(0,50);
另外,你所说的,让 Qt 根据内容的多少,自动设置各列的宽度,代码是:
ui->treewidget->header()->resizeSections(QHeaderView::ResizeToContents);
....... (2019-06-07 17:31) 

我一用ResizeToContents加载就特别慢,你有遇到吗
离线20091001753

只看该作者 3楼 发表于: 2019-06-07
回 wocan23 的帖子
ResizeToContents 有两种用法。
resizeSections 就是执行这句话的时候,才调整宽度。
setSectionResizeMode 就是实时根据内容变化调整,这个就会有点慢。

比如你可以用定时器3秒触发一次 resizeSections ,没必要实时。
(づ ̄ 3 ̄)づ
离线wocan23

只看该作者 4楼 发表于: 2019-06-10
回 20091001753 的帖子
20091001753:ResizeToContents 有两种用法。
resizeSections 就是执行这句话的时候,才调整宽度。
setSectionResizeMode 就是实时根据内容变化调整,这个就会有点慢。
比如你可以用定时器3秒触发一次 resizeSections ,没必要实时。 (2019-06-07 19:20) 

欧,明白了,3q
离线圣域天子

只看该作者 5楼 发表于: 2019-06-10
从听说过定时器去触发自适应的,应该是在编辑完成事件中调用的
快速回复
限100 字节
 
上一个 下一个