【问题标题】:Which is the QSystemTrayIcon tooltip max length in Windows?Windows 中 QSystemTrayIcon 工具提示的最大长度是多少?
【发布时间】:2017-05-19 08:38:17
【问题描述】:

我在QSystemTrayIcon::toolTip 的 Qt 5.8 文档中读到:

此属性保存系统托盘条目的工具提示。

在某些系统上,工具提示的长度是有限的。工具提示将是 必要时截断。

那我想知道Windows 10的限制是什么。

我在About Tooltip Controls看到了

注意标准工具提示文本的最大长度为 80 个字符。有关详细信息,请参阅NMTTDISPINFO 结构。多行工具提示文本可以更长。

然后,我用 Qt 创建了一个多行工具提示,我看到在 Windows 10 中,最大长度为 123 个字符(或者如果计算换行符,可能会多一点,比如 ~130)。

我的问题是:这(~130 个字符)是 Windows 10 中多行工具提示的最大长度吗?我能否根据系统从 Qt 获取此信息(如果应用程序在不同的操作系统上运行),以便我可以正确更改工具提示文本?

谢谢大家

【问题讨论】:

    标签: c++ windows qt system-tray


    【解决方案1】:

    在 Windows 2000 及更高版本上,工具提示的最大长度为 128 个字符。这在 MSDN 中记录了 NOTIFYICONDATA structure:

    szTip

    类型:TCHAR[64]

    一个以 null 结尾的字符串,指定标准工具提示的文本。它最多可以有 64 个字符,包括终止空字符。

    对于 Windows 2000 及更高版本,szTip 最多可以有 128 个字符,包括终止空字符。

    关于可移植性,这是一个非常特定于系统的值,所以我认为您无法使用纯 Qt 获得它。例如,Linux 中不同的窗口管理器可能有不同的长度限制。


    另一方面,为了完整起见,系统托盘气球中的文本长度更大(仅限 Windows 2000 及更高版本,取自同一来源):

    szInfo

    类型:TCHAR[256]

    Windows 2000 及更高版本。一个以 null 结尾的字符串,指定要在气球通知中显示的文本。它最多可以有 256 个字符,包括终止空字符,但应限制为 200 个英文字符以适应本地化。要从 UI 中删除气球通知,请删除图标(使用 NIM_DELETE)或在 uFlags 中设置 NIF_INFO 标志并将 szInfo 设置为空字符串。

    同样,标题的长度是:

    szInfoTitle

    类型:TCHAR[64]

    Windows 2000 及更高版本。一个以 null 结尾的字符串,指定气球通知的标题。此标题以较大字体显示在文本上方。它最多可以有 64 个字符,包括终止空字符,但在英文中应限制为 48 个字符以适应本地化。

    dwInfoFlags

    类型:DWORD

    Windows 2000 及更高版本。可以设置以修改气球通知的行为和外观的标志。图标位于标题的左侧。如果szInfoTitle 成员的长度为零,则不显示图标。

    【讨论】:

    • “关于可移植性,这是一个非常特定于系统的值,所以我认为您无法使用纯 Qt 获得它。” 是的,也不能您可以从 Windows 获得它,因为这不是运行时值。如您所见,它被硬编码到源代码中,因为该字段是一个固定长度的数组。
    • 非常感谢,正是我想要的。很遗憾,我无法在运行时获得该信息。
    • 您可以根据操作系统版本的运行时检查硬编码长度限制@n3mo。在 Windows 2000 之前,它是 63 个字符。在 W2K 及更高版本上,它是 127 个字符。很简单。如果将来更改了长度,您可以返回并最终将其添加到代码中,但它仍然会继续工作,所以这不是错误。
    • 我相信这个问题的后半部分是为了引用 szInfo(支持 256 个字符)而不是 szInfoTitledwInfoFlags 的文档。
    • @TimSparkles 是的,我已经更新了,感谢您指出这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2010-11-20
    • 1970-01-01
    • 2010-10-19
    • 2020-05-11
    • 2010-09-25
    • 1970-01-01
    相关资源
    最近更新 更多