图案设计网站大全,网站设计 价格,怎么识别网站开发语言,购物网站名字概述
在Qt中#xff0c;可以使用样式表#xff08;StyleSheet#xff09;来自定义 QMenu 的外观#xff0c;包括其子项#xff08;如菜单项QAction#xff09;的颜色。但是#xff0c;这通常可以设置 QMenu 的整体样式#xff0c;而不能单独设置某个子项的颜色。不过可以使用样式表StyleSheet来自定义 QMenu 的外观包括其子项如菜单项QAction的颜色。但是这通常可以设置 QMenu 的整体样式而不能单独设置某个子项的颜色。不过我们可以通过自定义的 QWidgetAction实现这一目标 效果图 实现过程
创建一个继承自 QWidgetAction 的子类 ColorAction。添加一个的 QWidget在 QWidget 中添加一个 QLabel。为这个 QLabel 设置样式表。然后将这个自定义的 QWidgetAction 添加到 QMenu 中。 关键代码
ColorAction 类
#pragma once#include QWidgetAction
#include QWidget
#include QLabel
#include QVBoxLayout
#include QStyleOptionclass ColorAction : public QWidgetAction
{Q_OBJECTpublic:ColorAction(const QString text, const int nMenuHeight, QObject *parent nullptr);~ColorAction();private:QLabel *label;QWidget *widget;
};#include ColorAction.hColorAction::ColorAction(const QString text, const int nMenuHeight, QObject *parent /* nullptr*/) : QWidgetAction(parent)
{// 创建一个QWidget作为容器并设置布局 widget new QWidget();QVBoxLayout *layout new QVBoxLayout(widget);layout-setContentsMargins(0, 0, 0, 0);// 创建QLabel并设置文字颜色 label new QLabel(text, widget);label-setFixedHeight(nMenuHeight);label-setFont(QFont(QString::fromLocal8Bit(微软雅黑), 10.5));label-setStyleSheet(QLabel{ padding-left:16px; color: #ff5050;background-color: rgb(255, 255, 255);} QLabel:hover{ background-color: #e9f2ff;});layout-addWidget(label);setDefaultWidget(widget);
}ColorAction::~ColorAction()
{
}使用 QMenu 类
#include QMenuColorDemo.h
#include QHBoxLayout
#include QVBoxLayout
#include QMouseEventclass QPoint;QMenuColorDemo::QMenuColorDemo(QWidget *parent): QWidget(parent)
{ui.setupUi(this); this-setFixedSize(310,200);_menu new QMenu;_menu-setFixedWidth(115);_menu-setFont(QFont(QString::fromLocal8Bit(微软雅黑), 10.5));int nMenuHeight 30;_menu-setStyleSheet(QString::fromLocal8Bit(QMenu{\background:white;\border:1px solid lightgray;\padding-top:10px;\padding-bottom:10px;\}\QMenu::item{\padding:0px 20px;\height:%1px;\}\QMenu::item:selected:enabled{\background:#e9f2ff;\color:black;\}\QMenu::item:selected:!enabled{\background:transparent;\}\QMenu::separator{\height:1px;\background:#e4e4e4;\margin:5px 0px 5px 0px;\}).arg(nMenuHeight));_viewAction new QAction(QString::fromLocal8Bit(查看), this);_refreshAction new QAction(QString::fromLocal8Bit(刷新), this);_delAction new ColorAction(QString::fromLocal8Bit(删除), nMenuHeight, this);_menu-addAction(_viewAction);_menu-addAction(_refreshAction);_menu-addSeparator();_menu-addAction(_delAction);_btn new QPushButton(QString::fromLocal8Bit(彩色菜单));connect(_btn,QPushButton::clicked,this, [](){QPoint p cursor().pos();_menu-exec(p);});QHBoxLayout * hLayout new QHBoxLayout;hLayout-addWidget(_btn);hLayout-addStretch();QVBoxLayout *vLayout new QVBoxLayout;vLayout-addItem(hLayout);vLayout-addStretch();this-setLayout(vLayout);
}void QMenuColorDemo::mousePressEvent(QMouseEvent *event)
{if (event-button() Qt::RightButton ){QPoint p cursor().pos();_menu-exec(p);}
}源码下载
https://download.csdn.net/download/qiangzi4646/89754043