【问题标题】:Why are my wxTreeListCtrl column widths always wrong?为什么我的 wxTreeListCtrl 列宽总是错误的?
【发布时间】:2022-09-04 07:56:33
【问题描述】:

我正在尝试使用 wxTreeListCtrl 显示多列。我正在使用 wxWidgets 3.0.5 并使用 GTK 进行开发,尽管我打算在 OSX 和 Windows 中使用此代码。

下面的屏幕截图显示了我所看到的(应用程序是一个文件浏览器,以防不明显)。第一列Filename 的大小始终与树视图的宽度一致。另外两列被推离右边;你可以看到滚动条。

如果我手动调整窗口大小,两列会弹出视图,这让我觉得树视图没有正确布局,但右侧列的手动设置宽度总是被忽略,并且随着我继续调整窗口大小它逐渐变得越来越大。

我已经尝试手动设置和获取列宽,看起来树视图控件主要忽略了我给它的数字 --- 如果我调用SetColumnWidth(...),然后立即调用GetColumnWidth(...),我得到 0 或一个不正确的数字。

实际的代码是微不足道的——这都是用 wxformbuilder 生成的,所以我希望它可以工作:

    browserTree = new wxTreeListCtrl( browsePanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTL_MULTIPLE|wxBORDER_THEME );
    browserTree->AppendColumn( wxT("Filename"), wxCOL_WIDTH_DEFAULT, wxALIGN_LEFT, 0 );
    browserTree->AppendColumn( wxT("Size"), 100, wxALIGN_RIGHT, 0 );
    browserTree->AppendColumn( wxT("Mode"), 100, wxALIGN_LEFT, 0 );

(我应该补充一点,这种行为体现在在 wxformbuilder GUI 查看器中, 也。)

让我怀疑的主要事情是小部件层次结构非常复杂,因此可能其中一位父母正在做一些事情来扰乱树视图,但我尝试将树视图移动到新框架中的新框尺寸器中同样的事情也发生在那里。但是如果有帮助,下面有一个层次结构的屏幕截图。

我发现了一些描述这种行为的非常古老的错误(例如这个:https://github.com/wxWidgets/wxWidgets/issues/17476),但它们都是真的旧的,反正已经修好了。如果这是一个真正的错误,我希望看到更多的投诉,因为它使小部件基本上无法使用;因此,这一定是我做错了,可能是一些非常基本的事情。

但是什么?

【问题讨论】:

    标签: wxwidgets


    【解决方案1】:

    哎呀,五分钟后我有答案了。我会在这里发布这个以防其他人有同样的问题,即使它让我看起来真的很愚蠢。

    短版:它我发现的那个五年前的虫子。只是我正在开发的Debian上的wxWidgets版本太旧了,还没有修复错误。

    好消息是确实有错误修复的 wxWidgets 3.2 正在打包中(最后一次发布于 2022 年 8 月 28 日:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919903)。但我认为这对我没有多大帮助,所以我需要找到一种解决方法。至少现在我知道发生了什么。

    【讨论】:

    • 您可以尝试自己编译最新版本,看看问题是否解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    相关资源
    最近更新 更多