Tan*_*gui 5 qt pyqt rounded-corners qdialog pyside
我想在 QDialog 上设置圆角。由于它是顶级窗口,因此 border-radius 不起作用,所以我必须这样做:
QRegion EnterPinDialog::roundedRect(const QRect& rect, int r)
{
QRegion region;
// middle and borders
region += rect.adjusted(r, 0, -r, 0);
region += rect.adjusted(0, r, 0, -r);
// top left
QRect corner(rect.topLeft(), QSize(r*2, r*2));
region += QRegion(corner, QRegion::Ellipse);
// top right
corner.moveTopRight(rect.topRight());
region += QRegion(corner, QRegion::Ellipse);
// bottom left
corner.moveBottomLeft(rect.bottomLeft());
region += QRegion(corner, QRegion::Ellipse);
// bottom right
corner.moveBottomRight(rect.bottomRight());
region += QRegion(corner, QRegion::Ellipse);
return region;
}
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
this->setMask(roundedRect(this->rect(), 8));
Run Code Online (Sandbox Code Playgroud)
它有效,但问题是角落被像素化。
有没有办法在没有这些像素化角的情况下获得它?如果是,怎么办?
根据您想要的对话框外观,您甚至可以通过 CSS 完全重新设置顶层窗口的样式,它们遵循盒模型,请参阅整个样式表文档。
border: 2px; border-radius 2px;
Run Code Online (Sandbox Code Playgroud)
会给你一个 2px 宽、半径为 2px 的边框。
我一般来说你应该能够通过样式表处理大部分 ui 定制需求
| 归档时间: |
|
| 查看次数: |
5623 次 |
| 最近记录: |