Qt的QMenu圆角处理
2011-10-14 17:45
281 查看
mainwindow.cpp
void MainWindow::on_Library_clicked()
void MainWindow::on_Library_clicked()
{
QMenu menu(this);
QMenu *LanguageMenu = menu.addMenu(tr("&Language"));
QAction *EnMenu = new QAction(tr("&English"), this);
QAction *ZhCnMenu = new QAction(tr("Chinese &Simple"),this);
LanguageMenu->addAction(EnMenu);
LanguageMenu->addAction(ZhCnMenu);
QMenu *Skin = menu.addMenu(tr("&Skin"));
QAction *WBAction = new QAction(tr("&White and Blue"),this);
QAction *OtherAction = new QAction(tr("&Other"),this);
Skin->addAction(WBAction);
Skin->addAction(OtherAction);
QPainterPath path;
QRectF rect = QRectF(0,0,menu.sizeHint().width(),menu.sizeHint().height());
path.addRoundedRect(rect,6,6);
QPolygon polygon= path.toFillPolygon().toPolygon();//获得这个路径上的所有的点
QRegion region(polygon);//根据这个点构造这个区域
menu.setMask(region);
QPoint pos;
pos.setX(0);
pos.setY(-menu.sizeHint().height());
menu.exec(ui->Library->mapToGlobal(pos));
}
Qss文件
QMenu {border-radius: 5px;
border: 1px solid rgb(110, 110, 110);
}
这是我在做QMenu圆角处理过程中写的代码,使用遮罩做的,没有用到重构,有些瑕疵的是左下和左上角有些白边,这里如果没有使用Qss做圆角边可以避免瑕疵,但是就没有边了,而且圆角要超过6,否则也会出现瑕疵,期待高手解决。下面附上效果图
相关文章推荐
- Qt中QMenu的菜单关闭处理方法
- Qt中QMenu的菜单关闭处理方法
- Qt中QMenu的菜单关闭处理方法
- QT 使用QSS实现圆角对话框
- QT无边框圆角
- QT QNetworkAccessManager跳转URL处理
- 在非UI线程中更改UI(Delphi使用隐藏窗口来处理,QT使用信号槽)
- Qt 学习之路 2(64):使用 QJsonDocument 处理 JSON
- [Q学习]10 Qt事件系统——处理事件
- Qt事件处理(二)
- UIView或者UIImageView的圆角处理
- php图片处理类:缩略,裁剪,圆角,倾斜
- Qt 事件处理机制 (下篇)
- iOS 开发中问题 ——对button进行圆角处理,绘制边框
- 用 Qt 中的 QDomDocument类 处理 XML 文件(上)
- Qt事件处理(四)
- Qt: 隐藏菜单QMenu
- 常见的几个Qt编程问题的处理(转载)
- Qt应用程序过大引起的nfs异常:nfs: server *** not responding 处理方法
- Qt实战之开发软件数据获取助手(eventFilter处理鼠标按下,event处理鼠标松开)