Qt的菜单在开发过程中经常会用到,默认的菜单风格就是显示一般的文字,其实可以通过设置菜单项的风格来改善菜单的美观,下面是通过CSS样式表来设置菜单,CSS的属性有很多,下面主要介绍一些常用的,更多的设置可以参考Qt的帮助文档https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qmenu:
属性名 | 解释 |
---|---|
color | 字体颜色 |
background-color | 背景色 |
font-size | 字体大小 |
font-family | 字体类型 |
background-image | 背景图 |
padding | 边距(可以设置4边不同的边距例如padding-left, padding-top待) |
border | 边框设置(可以设置4边的线,比如底部线border-bottom) |
border-radius | 设置圆角 |
实例代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMenu>
#include <QContextMenuEvent>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
, m_menu(new QMenu(this))
{
ui->setupUi(this);
initCreateAction();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::initCreateAction()
{
m_copyAction = new QAction("copy", this);
m_pasteAction = new QAction("paste", this);
m_menu->setStyleSheet("QMenu{background-color:rgb(255,255,255); padding:5px;border-style:solid; border-width:1px;border-color:rgb(61,126,255);border-radius:3px;}"
"QMenu::item{font-size:14px;color:rgb(61,126,255);padding-left:8px;padding-top:7px;padding-bottom:8px;padding-right:10px;background-color:rgb(255,255,255);border-bottom:1px solid #999999;}"
"QMenu::item:selected{font-size:14px;color:rgb(231,235,244);padding-left:8px;padding-top:7px;padding-bottom:8px;padding-right:10px;background-color:rgb(61,126,255);}");
}
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
m_menu->clear();
m_menu->addAction(m_copyAction);
m_menu->addAction(m_pasteAction);
//m_menu->popup(this->mapToGlobal(event->pos()));
//m_menu->exec(this->mapToGlobal(event->pos()));
m_menu->exec(QCursor::pos());
}