FLTK - FL_Tooltip - 修改工具提示大小

Posted

技术标签:

【中文标题】FLTK - FL_Tooltip - 修改工具提示大小【英文标题】:FLTK - FL_Tooltip - Modify tooltip size 【发布时间】:2020-07-30 08:02:41 【问题描述】:

我正在使用 FLTK 1.3.5(在 Mac 上,Catalina 10.15.5,clang 版本 11.0.3),我想拥有带有 tooltips 的小部件,我想为其决定边距和其他选项。特别是,我想在margin_widthwrap_width上工作,所以我尝试了以下方法

#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Tooltip.H>
#include <FL/Fl_Box.H>


int main(int argc, char **argv) 

    Fl_Window *G_win = 0;
    G_win = new Fl_Window(300,300,"Test");

    Fl_Box* B;
    B = new Fl_Box(10,10,280,280,"Test Tooltip");
    Fl_Tooltip::margin_width(12);
    B->tooltip("I want a huge tooltip!");


    G_win->end();
    G_win->show(argc, argv);
    
    return Fl::run();

但我收到此错误:

error: too many arguments to function call, expected 0, have 1
    Fl_Tooltip::margin_width(12);
    ~~~~~~~~~~~~~~~~~~~~~~~~ ^~
/usr/local/include/FL/Fl_Tooltip.H:95:3: note: 'margin_width' declared here
  static int margin_width()  return 3; 

仔细查看Fl_Tooltip.H后,如果FLTK_ABI_VERSION变量大于等于10301(头文件第81行),似乎我要使用的功能是启用的。我检查了文件 Enumerations.H 并检查了即使我有 FLTK 1.3.5 FLTK_ABI_VERSION 是 10300。 实际上,FLTK_ABI_VERSION 被定义为FL_MAJOR_VERSION*10000 + FL_MINOR_VERSION*100,因此它将始终低于 10301,在我的情况下,FL_MAJOR_VERSION 等于 1 FL_MINOR_VERSION 等于 3。

此外,同一个头文件说实际上FLTK_ABI_VERSION 已被弃用,它将被FL_API_VERSION 替换,这正是10305,对应于FLTK 1.3.5。

这是原始代码中的错误还是我遗漏了什么?

【问题讨论】:

您是在 Linux 还是 Windows 上构建。比较适用于 Linux,但不适用于 Windows @cup 我在 Mac 上工作:我忘了在问题中直接提到它。 这可能是Mac和Windows上存在的问题,但gcc上没有。您可能需要使用fltk.org/applications/str.php 来提高它 【参考方案1】:

我不了解 Mac,但要让它在 MS 编译器上工作

#if FLTK_ABI_VERSION >= 10301

应该改为

#if (FLTK_ABI_VERSION >= 10301)

在 Mac 上试试。如果有效,请向https://www.fltk.org/applications/str.php报告错误并修复,并记得指定Mac和Windows。

我查看了回归测试 - 我找不到它的测试。我怀疑这个功能只在 Linux 上测试过

编辑

您还需要修改 FL_Tooltip.cxx 并重建 FLTK 库

编辑

作为参考,请查看 README.abi-version.txt。添加括号后,重新配置

./configure --with-abiversion=10305

然后进行安装

【讨论】:

我试过但它不起作用,我得到了同样的错误。我也尝试写#if FLTK_ABI_VERSION &gt;=0,但它似乎也不起作用,我收到use of undeclared identifier 'margin_width_'; did you mean 'margin_width'? static int margin_width() return margin_width_; 之类的错误。我会报告这个错误,我想检查这里是否有人知道解决方案。感谢您的帮助! 我按照您的建议尝试了括号,并且在问题中报告了相同的错误。然后,我尝试使用0(带和不带括号)修改if 语句,但我得到关于变量名称的错误:似乎带有最后下划线的名称,如margin_width_ 没有声明。跨度> 它们在 FL_tooltip.cxx 中声明 - 它也有需要修改的 if 语句。然后你需要重建库 我会重新下载库并按照您的建议进行修改! 我按照你的建议尝试了但是没有成功:我会尝试在FLTK的网站上报告这个错误,即使他们写的是他们正在专注于开发1.4版本......

以上是关于FLTK - FL_Tooltip - 修改工具提示大小的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 FLTK 的简单电话簿

如何构建 FLTK 以与 Netbeans (Windows) 一起使用

在 microsoft visual 2010 上安装 FLTK 1.3.2

我可以使用 FLTK 1.3 在不同线程上创建窗口吗?

Cygwin-1.7.17环境下编译FLTK-1.3.2

FLTK:Fl_Value_Input 子类不接收 FL_KEYDOWN 事件(仅 FL_KEYUP)