在Qt中,可以通过重写QMenuBar的event方法来实现在鼠标悬停QMenuBar的项目时触发"加粗"的效果。
具体步骤如下:
class CustomMenuBar : public QMenuBar
{
Q_OBJECT
public:
explicit CustomMenuBar(QWidget *parent = nullptr);
protected:
bool event(QEvent *event) override;
};
CustomMenuBar::CustomMenuBar(QWidget *parent) : QMenuBar(parent)
{
// 设置菜单项的样式
setStyleSheet("QMenuBar::item:hover { font-weight: bold; }");
}
bool CustomMenuBar::event(QEvent *event)
{
if (event->type() == QEvent::HoverMove)
{
QHoverEvent *hoverEvent = static_cast<QHoverEvent *>(event);
QAction *action = actionAt(hoverEvent->pos());
if (action)
{
// 设置当前悬停菜单项的样式
action->setFont(QFont("Arial", 10, QFont::Bold));
}
}
else if (event->type() == QEvent::Leave)
{
// 恢复所有菜单项的样式
QList<QAction *> actions = findChildren<QAction *>();
foreach (QAction *action, actions)
{
action->setFont(QFont("Arial", 10, QFont::Normal));
}
}
return QMenuBar::event(event);
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
CustomMenuBar *menuBar = new CustomMenuBar(this);
setMenuBar(menuBar);
}
这样,当鼠标悬停在CustomMenuBar的项目上时,该项目的字体将会加粗显示。当鼠标离开CustomMenuBar时,所有项目的字体将恢复正常。
推荐的腾讯云相关产品:腾讯云服务器(CVM),腾讯云数据库(TencentDB),腾讯云对象存储(COS)等。你可以在腾讯云官网上找到这些产品的详细介绍和文档。
腾讯云官网链接:https://cloud.tencent.com/
领取专属 10元无门槛券
手把手带您无忧上云