如何设置Qt工具提示的宽度

6
需要在工具提示中显示2行文本,其中包含粗体和多彩字符,但似乎工具提示有最大宽度并且文字被截断了。我尝试计算文本的宽度并手动设置宽度,但是没有任何效果,似乎“style =“width:some px””对工具提示无效。以下是代码:
QString tooltip = "<div style= \"white-space: nowrap; width: 1500px;\">Some text for tooltip, which is too long</div>";

如何更改工具提示的宽度?

there is no effect on tooltip


我不会期望在没有table标签的情况下使用tr和td。你尝试过简单一点的方法吗?比如说,第二行只使用br标签?另外,似乎用QString::fromStdString是不必要的。 - Son-Huy Pham
在使用QString::fromStdString时似乎是不必要的。 是的,我在发布这个问题之前已经编辑了使用std::string变量的真实代码。 :) 而且你是对的,我可以通过<div style="white-space: nowrap;"></div>来关闭单词换行,而不需要使用tr/td。 - IKM2007
提示框的宽度呢?你有什么想法吗? - IKM2007
我无法重现这种行为。请提供您用于添加工具提示的代码。哪个小部件有工具提示? - Pavel Strakhov
1
似乎这是针对项目特定的,无论如何我找到了解决方案,它部分修复了问题。我为小部件设置了样式表,应该显示工具提示:setStyleSheet("QToolTip{ min-width: " + QString::number(width) + "px; width: " + QString::number(width) + "px;}");但现在宽度太长(大约50px),我尝试设置最大宽度,但没有效果。谢谢。 - IKM2007
这是相关的,你可能想要投票:https://bugreports.qt.io/browse/QTBUG-41051 - Silicomancer
2个回答

3

在QtCreator/Designer的属性部分,我使用了:

<html>
<table width="25">
  <tr>
    <td width="25">alwkefjwekf</td>
  </tr>
  <tr>
    <td width="25">a ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea e</td>
  </tr>
</table>
</html>

这应该会帮助你更好地限制表格的大小。我毫不怀疑可能有更简洁的表达方式。
由QtCreator生成的一个具体示例:
pushButton->setToolTip(QApplication::translate("MainWindow", "    <html>\n"
"    <table width=\"25\"><tr><td width=\"25\">alwkefjwekf</td></tr>\n"
"    <tr><td width=\"25\">a ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea e</td></tr>\n"
"    </table>\n"
"    </html>", 0));

2

这段代码可以稍微简洁一些...
此外,不要设置"white-space: nowrap;",因为在小宽度下会截断文字
而且尽可能不要编写固定的类名,因为没有 __CLASS__,我使用了 __FUNCTION__

如果你真的需要Qt Linguist(翻译函数)的类名,请确保开启了RTTI编译器选项,并使用 typeid(*this).name()

setToolTip( QApplication::translate(__FUNCTION__, "    <html>\n"
                                                  "    <div style=\"width: 300px;\">ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea ea</div>"
                                                  "    </html>", 0
                                 ));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接