You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 21:13:11