如果 QTooltip 设置边距不生效,可能是因为设置的边距值过小,无法被正常显示,或者是因为 QTooltip 的样式表中存在其他属性覆盖了边距的设置。解决方法可以尝试以下几种:

  1. 尝试增大边距的值,确保边距能够被正常显示。

  2. 在设置边距之前,先将 QTooltip 的样式表清空,再进行边距的设置。可以使用 QToolTip::balloon 类选择器来指定 QTooltip 的样式。

例如:

QToolTip::balloon {
    background-color: #ffffff;
    border: 1px solid #000000;
    /* 清空样式表后再设置边距 */
    padding: 10px;
}
  1. 如果边距仍然不生效,可以尝试使用 QStyleOption 类型的参数对 QTooltip 进行绘制,手动设置边距。

例如:

QStyleOption opt;
opt.rect = QRect(0, 0, 100, 100); // 设置 QTooltip 的矩形区域
opt.palette.setColor(QPalette::ToolTipBase, Qt::white); // 设置背景色
opt.palette.setColor(QPalette::ToolTipText, Qt::black); // 设置文本颜色
opt.palette.setColor(QPalette::WindowText, Qt::black); // 设置文本颜色
opt.palette.setColor(QPalette::Window, Qt::white); // 设置背景色
opt.palette.setColor(QPalette::WindowText, Qt::black); // 设置文本颜色
opt.palette.setColor(QPalette::Base, Qt::white); // 设置背景色
opt.palette.setColor(QPalette::Text, Qt::black); // 设置文本颜色
opt.palette.setColor(QPalette::Button, Qt::white); // 设置背景色
opt.palette.setColor(QPalette::ButtonText, Qt::black); // 设置文本颜色
opt.palette.setColor(QPalette::BrightText, Qt::red); // 设置文本颜色
opt.palette.setColor(QPalette::Highlight, Qt::blue); // 设置高亮颜色
opt.palette.setColor(QPalette::HighlightedText, Qt::white); // 设置高亮文本颜色
opt.fontMetrics = QFontMetrics(font()); // 设置字体度量
opt.text = "This is a tooltip"; // 设置文本内容
opt.palette.setColor(QPalette::ToolTipBase, QColor(255, 255, 232)); // 设置背景色
opt.palette.setColor(QPalette::ToolTipText, QColor(0, 0, 0)); // 设置文本颜色
opt.palette.setColor(QPalette::Text, QColor(0, 0, 0)); // 设置文本颜色
opt.palette.setColor(QPalette::Highlight, QColor(0, 0, 128)); // 设置高亮颜色
opt.palette.setColor(QPalette::HighlightedText, QColor(255, 255, 255)); // 设置高亮文本颜色

opt.rect.adjust(10, 10, -10, -10); // 设置边距
QApplication::style()->drawControl(QStyle::CE_ToolTip, &opt, painter); // 绘制 QTooltip

原文地址: http://www.cveoy.top/t/topic/bT75 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录