许以调色板的方式设置提示的背景色和前景色(文本颜色)。直接看例子:
int main(int argc, char* argv[])
{
QApplication app(argc, argv);// 获取工具提示的现有调色板
QPalette pal = QToolTip::palette();
// 修改背景色
pal.setColor( QPalette::Inactive, QPalette::ToolTipBase, QColor("darkblue") ); // 修改文本颜色
pal.setColor( QPalette::Inactive, QPalette::ToolTipText, QColor("lightyellow") ); // 重新设置调色板
QToolTip::setPalette(pal);
// 窗口
QWidget* window = new QWidget;
window->setWindowTitle("自定义ToolTip颜色");
window->resize(250, 100);
// 布局
QHBoxLayout *layout = new QHBoxLayout;
window->setLayout(layout);
// 两个按钮
QPushButton *btn1, *btn2;
btn1 = new QPushButton("回到过去", window);
btn2 = new QPushButton("看看未来", window);
layout->addWidget(btn1);
layout->addWidget(btn2);
// 为按钮设置提示
btn1->setToolTip("一键触发穿越之旅");
btn2->setToolTip("一键改变人生");
// 显示窗口
window->show();
// 进入主循环
return QApplication::exec();
}
代码是没有问题的,但很多同学可能遇到运行之后没有效果的问题。就像这样:
很多大伙伴们可能还找不到解决方案。其实这事是主题造成的,Windows 上默认使用 WindowsVista 主题,我们换一个主题就行了,比如,换成 Windows 主题。如果你不知道当前环境下支持哪些主题,可以调试输出一下 QStyleFactory::keys 方法的返回结果。
qDebug() << QStyleFactory::keys();
得到的输出如下:
QList("windowsvista", "Windows", "Fusion")
除了 Windowsvista,另外两个随便选,都可以。
咱们修改一下应用程序的主题,在 app 变量上调用。
QApplication app(argc, argv);
// 改变主题
app.setStyle("Fusion");
再运行一下看看,效果就有了。
好了,今天的话题就聊到这儿了。