gpt4 book ai didi

c++ - wxWidgets,wxListCtrl : How to prevent auto size of column when db-click on divider

转载 作者:行者123 更新时间:2023-11-28 04:41:36 29 4
gpt4 key购买 nike

[最后编辑]

我在用 wxWidgets 编写 gui 程序时总是遇到同样的问题。

当在列之间双击wxListCtrl with report type 中的分隔符时,左侧列的大小将调整为“最佳”宽度。当然,在很多情况下这是一个不错的功能,但我希望在某些情况下能够将其关闭。

我一直在浏览 wxWidgets 社区的错误报告和信息博客,这是一个问题,据我所知,没有多少人问过这个问题。

我曾经找到的唯一一件事(不记得了,也找不到链接)是一个错误报告的答案,其中提到类 wxHeaderctrl 实际上拥有一个名为 EVT_HEADER_DCLICK 的事件(id, func).

之后我查看了文档和示例,还提到了 wxHeaderCtrl 以某种方式用于 listctrl 和其他列表。但是我在这些类之间的任何地方都找不到联系,而且我仍然找不到一种方法来防止通过使用“定制类”方法双击分隔线时自动调整列的大小。

是否真的有办法以“wxWidgets”的方式做到这一点,或者我是否必须更改为另一个工具包(或框架)?

提前感谢您的推荐。

更多信息:

  • 平台:Windows 10
  • 语言:C++
  • 编译器:mingw64 v7.3.0
  • 工具包:wxWidgets v3.0.4

图片:点击 db 之前

enter image description here

图片:点击数据库后

enter image description here

编辑(2018 年 4 月 29 日 16:42 | MESZ)

在考虑了 VZ 在其他子类中的答案后,我实际上发现了一些东西,这些子类使用分离模型来查看方法(我习惯于从其他语言或工具包中使用)

我现在使用 wxDataViewCtrl 作为 View ,使用 wxDataViewListStore 作为模型。在控件类中,我可以为每一列设置特定的标志,包括调整大小和其他事件。

谢谢你激发了我的思想:)

最佳答案

双击时调整列的大小是 MSW 列表控件的 native 行为,我认为目前使用 wx API 的可调整大小的项目不容易防止这种情况发生。

当然,如果项目一开始就不能调整大小,那么就没有问题。但是如果你想让用户调整它的大小而不是在双击时自动执行它,你需要以相当不自然的方式编写你的代码并处理之后发生的wxEVT_LIST_COL_DRAGGING事件 wxEVT_LIST_COL_END_DRAG 因为这些人为事件仅在双击时生成,而不是在正常拖动时生成,然后强制将列大小调整回其原始宽度。 IMO 它太丑陋而且不值得,但如果你真的想要的话,你应该能够让它工作。

关于c++ - wxWidgets,wxListCtrl : How to prevent auto size of column when db-click on divider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50081235/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com