QTooltip 设置边距不生效怎么解决
如果 QTooltip 设置边距不生效,可能是因为设置的边距值过小,无法被正常显示,或者是因为 QTooltip 的样式表中存在其他属性覆盖了边距的设置。解决方法可以尝试以下几种:
-
尝试增大边距的值,确保边距能够被正常显示。
-
在设置边距之前,先将 QTooltip 的样式表清空,再进行边距的设置。可以使用 QToolTip::balloon 类选择器来指定 QTooltip 的样式。
例如:
QToolTip::balloon {
background-color: #ffffff;
border: 1px solid #000000;
/* 清空样式表后再设置边距 */
padding: 10px;
}
- 如果边距仍然不生效,可以尝试使用 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 著作权归作者所有。请勿转载和采集!