【问题标题】:wxwidgets slider labels messed up (C++)wxwidgets 滑块标签搞砸了(C++)
【发布时间】:2020-09-04 20:18:21
【问题描述】:

我正在以最简单的方式创建一个 wxSlider:

  wxSlider *yma = new wxSlider(this,wxID_ANY,0,0,50,wxDefaultPosition,wxDefaultSize,wxSL_VALUE_LABEL);

它基本上不起作用;当我滑动滑块时,相关的“值”会经过一系列按字母(非数字)排序的值并以 5 结束。(5 也出现在滑块末端附近,在正确的位置。)最大值/最小值也显示为 0(正确)和 5(不正确)。 (实际上,整个事情有点不正确——我认为 wxSL_VALUE_LABEL 会关闭最大/最小标签,但事实并非如此。)

如果我转到随 wxWidgets 分发的示例并编译小部件示例,我会得到相同的行为。我在运行 Catalina 的 Mac 上,所以一切都是 clang 11.0.3。我编译的示例来自 wxWidgets 3.0.1,构建在一个专用目录中。根据 brew,我构建自己的滑块的版本使用 3.0.5.1_1。

有什么帮助吗?

【问题讨论】:

  • 所以我认为您没有自己编译库,而是从Homebrew 安装的。但是您尝试的示例来自不同版本的库?如果您可以在与您的应用程序相同版本的库的示例中重现标签截断,这可能是一个错误,您应该将其归档到 trac.wxwidgets.org
  • 这似乎是 Catalina 问题。据我所知,wxWidgets 和 Catalina 完全是一团糟。我最终能够编译 3.1.4(一切似乎都可以正常工作),但没有更早的版本。
  • 是的,对于 Catalina,您至少需要 3.1.3(尤其是如果您需要暗模式支持)。而且它很容易编译:cd wxWidgets-3.1.4 && mkdir buildMac && cd buildMac && ../configure --enable-debug && make 你这样做有什么问题吗?然后对于示例,只需执行以下操作:cd wxWidgets-3.1.4/buildMac/samples/widgets && make.
  • 是的,我在编译它时遇到了很多奇怪的问题。我还需要 --disable-shared,最奇怪的是,Makefile 中的这一行失败了:(if test -f utils/wxrc/Makefile ; then cd utils/wxrc && $(MAKE) all ; fi),因为测试成功了,然后 cd 失败了!我不得不 cd 进入 utils/wxrc,手工制作,然后将 Makefile 移开,这样测试 -f 就会失败!但是一旦我这样做了,事情似乎就按预期工作了。
  • 为什么需要--disable-shared?最好在 *nix/OSX 上使用动态(AKA 弱)衬里,特别是考虑到 OSX 的发布周期与 wxWIdgets 不同。所以SDK的增加可能会让你的程序失败。

标签: c++ macos slider wxwidgets


【解决方案1】:

事实证明 wxWidgets 的稳定版本不适用于 Catalina;您必须使用 3.1.3 或更高版本(根据 Igor 上面的评论)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多