Qt 6.5.2下使用样式表修改QToolTip文本颜色失败求助
QToolTip样式表不生效的原因及解决方法
问题原因
你将QToolTip的样式表直接应用在了QLineEdit控件上,但QToolTip是独立的顶层窗口,不属于QLineEdit的子控件层级,因此QLineEdit的样式表无法对其产生作用。另外原代码里的font: bold会覆盖之前设置的font-size属性,导致字号设置失效。
解决方案
方案1:全局设置应用程序级的样式表
通过全局应用程序对象qApp设置样式,所有控件的ToolTip都会应用该样式:
#include "mainwindow.h" #include <QLineEdit> #include <QApplication> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QLineEdit *line_edit = new QLineEdit(this); line_edit->setToolTip("toolTip"); qApp->setStyleSheet(R"( QToolTip { border: none; padding: 2px; background-color: yellow; color: pink; font-size: 36px; font-weight: bold; } )"); this->setCentralWidget(line_edit); } MainWindow::~MainWindow() { }
方案2:使用QToolTip的静态方法单独设置
利用QToolTip提供的静态setStyleSheet方法,专门配置ToolTip样式:
#include "mainwindow.h" #include <QLineEdit> #include <QToolTip> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QLineEdit *line_edit = new QLineEdit(this); line_edit->setToolTip("toolTip"); QToolTip::setStyleSheet(R"( QToolTip { border: none; padding: 2px; background-color: yellow; color: pink; font-size: 36px; font-weight: bold; } )"); this->setCentralWidget(line_edit); } MainWindow::~MainWindow() { }
关键注意点
- 替换原代码中的
font: bold为font-weight: bold,避免覆盖font-size的设置; - QToolTip的样式无法通过子控件的样式表传递,必须通过全局应用程序或QToolTip自身的静态方法设置。
内容的提问来源于stack exchange,提问作者Minh
相关产品推荐
相关产品推荐

