1

在 Qt 中,您可以使用 CSS 样式表来QWidget生成圆角:

QWidget#myWidget {
    background-color: #ffbb33;
    border-radius: 20px;
}

圆角的 QWidget

我想对此进行动画QWidget处理以显示它从屏幕底部弹出以通知用户,但发现当小部件的高度小于边框半径时,圆形边缘会不和谐地消失。

动画 QWidget 显示圆角消失的效果

有可能防止这种情况吗?

更新:我感谢每个人针对此问题提供的与网络相关的解决方案。他们中的大多数实际上确实很好地翻译了这个应用程序。但我只想指出,这个应用程序是C++Qt库编码的。如果您有其他与网络相关的解决方案,请务必发布它们,但请注意,如果您使用网络技术来执行此操作,那么“它适用于我”在这种情况下并不完全适用。;)

4

4 回答 4

2

您可以为角落设置动画。从小范围或无边界半径开始,然后逐步建立您需要的范围。你可能没有使用 jQuery,但你可以做类似的事情。

CSS

#myWidget {
     border-radius: 5px;
}

jQuery

$('#myWidget').animate({ 'border-radius': '20px' }, 1500);
于 2013-07-22T21:17:04.387 回答
1

为什么不直接将bottomCSS 属性设置为负高度,然后将bottom属性设置为 0,而不是 0 height有关示例,请参见此小提琴。这样你就不必弄乱元素的高度,也不会有任何奇怪的内容挤压。

于 2013-07-22T21:15:10.277 回答
1

由于您使用的是 QPropertyAnimation,因此您可以设置与调整大小动画并行的动画,该动画使圆形边框从半径 0px 变为 20px(或其他)。

于 2013-07-22T21:34:27.700 回答
0

您可以做的一件事是重新实现 QWidget's resizeEvent,然后计算边框的最大可用大小。this.setStyleSheet("border-radius: ?px");然后使用(显然替换 ? 来设置边界半径)

您可以在这里查看如何重新实现一个函数:https://beginnersbook.com/2017/09/cpp-function-overriding/,其中 BaseClass 是 QWidget,而 DerivedClass 是新的小部件,您可以将其称为 QRoundedCornersWidget。

于 2021-07-26T09:50:08.913 回答