sepera_okeq Asked:2022-06-26 06:15:19 +0000 UTC2022-06-26 06:15:19 +0000 UTC 2022-06-26 06:15:19 +0000 UTC 为 QMainWindow 制作圆角边缘 772 有一个问题是样式(每个屏障)不适用于主 QMainWindow 小部件 - 特别是 border: 1px solid black; border-radius: 10px; 我想做这样的事情: 但由于某种原因,它看起来像这样: 我究竟做错了什么? 是否可以使用 QSS?如果没有,那么我真的不明白如何用加号上的代码来实现它.. c++ 2 个回答 Voted Best Answer sepera_okeq 2022-06-28T05:48:43Z2022-06-28T05:48:43Z 寻找关于这个答案的问题,我意识到最后,这不能使用 QSS 来完成 MainWindow 类型的顶级窗口。 在这些自定义窗口之外,实际上不可能更改 Windows 的外观,因为操作系统对此进行了控制。不是Qt。 要解决此问题,请使用 QPainterPath 和蒙版创建圆角: QPainterPath painPath; painPath.addRoundedRect(rect(), 8, 8, Qt::AbsoluteSize); this->setMask(painPath.toFillPolygon().toPolygon()); PS 使用 QPainther 更平滑的角落: QPainter pain; this->setAttribute(Qt::WA_TranslucentBackground); // Ставим прозрачный фон pain.setRenderHint(QPainter::Antialiasing); pain.setPen(Qt::NoPen); pain.drawRoundedRect(rect(), 8, 8, Qt::AbsoluteSize); Монолитовец 2022-03-26T03:41:42Z2022-03-26T03:41:42Z 你可以像我一样做。通过 QSS 将 QFrame 或任何其他具有圆角边缘的小部件作为背景,并使 QMainWindow 透明。
寻找关于这个答案的问题,我意识到最后,这不能使用 QSS 来完成 MainWindow 类型的顶级窗口。
在这些自定义窗口之外,实际上不可能更改 Windows 的外观,因为操作系统对此进行了控制。不是Qt。
要解决此问题,请使用 QPainterPath 和蒙版创建圆角:
PS 使用 QPainther 更平滑的角落:
你可以像我一样做。通过 QSS 将 QFrame 或任何其他具有圆角边缘的小部件作为背景,并使 QMainWindow 透明。