【发布时间】: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