在QToolTip中使用图片或图像

buh*_*htz 5 qt

有没有办法在QToolTip中显示图片/图像?

我想显示键盘按钮的小图像,以向用户解释他可以在该特定小部件上使用哪些按钮/快捷方式.

Ant*_*ias 10

您可以使用以下HTML代码轻松显示图像:

QToolTip::showText(QCursor::pos(), "<img src=':/icon.png'>Message", this, QRect(), 5000);
Run Code Online (Sandbox Code Playgroud)

此示例将显示工具提示,其中包含来自Qt资源的图像和文本5秒.

有关详细信息,您可以看到以下视频:https://youtu.be/X9JD8gKGZ00

EDIT1:

如果要从内存中显示图像,可以将QImage/QPixmap保存到内存中(最好使用像PNG这样的无损压缩)并将其转换为base 64并使用html代码加载它,如下所示:

QImage icon = QImage(10, 10, QImage::Format_ARGB32);
icon.fill(QColor(255, 0, 0, 100));
QByteArray data;
QBuffer buffer(&data);
icon.save(&buffer, "PNG", 100);
QString html = QString("<img src='data:image/png;base64, %0'>Message").arg(QString(data.toBase64()));
QToolTip::showText(QCursor::pos(), html, this, QRect(), 5000);
Run Code Online (Sandbox Code Playgroud)

Edit2:修正了@Damon Lynch建议的html字符串.


小智 8

关于HTML字符串,Python 3/PyQt相当于user2014561在内存映像中显示的优秀解决方案是这样的,假设一个QPixmap(一个QImage将工作相同):

buffer = QBuffer()
buffer.open(QIODevice.WriteOnly)
pixmap.save(buffer, "PNG", quality=100)
image = bytes(buffer.data().toBase64()).decode()
html = '<img src="data:image/png;base64,{}">'.format(image)
Run Code Online (Sandbox Code Playgroud)