首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QT:如何在鼠标悬停QMenuBar的项目时触发“加粗”

在Qt中,可以通过重写QMenuBar的event方法来实现在鼠标悬停QMenuBar的项目时触发"加粗"的效果。

具体步骤如下:

  1. 创建一个自定义的QMenuBar子类,例如CustomMenuBar。
代码语言:txt
复制
class CustomMenuBar : public QMenuBar
{
    Q_OBJECT
public:
    explicit CustomMenuBar(QWidget *parent = nullptr);

protected:
    bool event(QEvent *event) override;
};
  1. 在CustomMenuBar的构造函数中,设置菜单项的样式。
代码语言:txt
复制
CustomMenuBar::CustomMenuBar(QWidget *parent) : QMenuBar(parent)
{
    // 设置菜单项的样式
    setStyleSheet("QMenuBar::item:hover { font-weight: bold; }");
}
  1. 重写CustomMenuBar的event方法,在鼠标悬停菜单项时触发"加粗"的效果。
代码语言:txt
复制
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);
}
  1. 在主窗口中使用CustomMenuBar替代原有的QMenuBar。
代码语言:txt
复制
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    CustomMenuBar *menuBar = new CustomMenuBar(this);
    setMenuBar(menuBar);
}

这样,当鼠标悬停在CustomMenuBar的项目上时,该项目的字体将会加粗显示。当鼠标离开CustomMenuBar时,所有项目的字体将恢复正常。

推荐的腾讯云相关产品:腾讯云服务器(CVM),腾讯云数据库(TencentDB),腾讯云对象存储(COS)等。你可以在腾讯云官网上找到这些产品的详细介绍和文档。

腾讯云官网链接:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Qt编写自定义控件24-图片轮播控件

    上一篇文章写的广告轮播控件,采用的传统widget堆积设置样式表做的,这次必须要用到更高级的QPainter来绘制了,这个才是最高效的办法,本控件参考雨田哥的轮播控件,经过大规模的改造而成,相比于原来的广告轮播控件,本控件可以说完爆他,按在地上使劲摩擦。除了可以设置图片路径集合以外,还可以设置对应的提示信息,这个在众多的web轮播图片效果中最常见,比如新闻的标题等,可以更直观的显示当前图片,而且单击图片还可以支持跳转,指示器的位置也能设置左边+中间+右边,指示器的样式更加增加到椭圆条状+圆形+矩形+小圆点+长条状多种可选择,可以说涵盖了各种web轮播图片的效果,还可以设置鼠标悬停暂停轮播,以便看清说明后鼠标移开继续轮播。指示器的宽高颜色等,都是可以自由设定的,这个对于采用QPainter绘制来说,是最好自定义的,无非就是设置对应的画笔QPen和对应的画布QBrush的颜色啦。

    01
    领券