Используйте изображение или изображение в QToolTip
Есть ли способ показать картинку / изображение в QToolTip?
Я хочу показать небольшие изображения кнопок клавиатуры, чтобы объяснить пользователю, какие кнопки / ярлыки он может использовать в этом конкретном виджете.
2 ответа
Вы можете легко показать изображения с помощью следующего HTML-кода:
QToolTip::showText(QCursor::pos(), "<img src=':/icon.png'>Message", this, QRect(), 5000);
В этом примере будет показана всплывающая подсказка с изображением из ресурсов 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);
Edit2: исправил HTML-строку, как предлагает @Damon Lynch.
Что касается строки 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)