- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
一个QWidget
作为一个paintEvent
函数负责他的绘图。为了正确实现这个功能,一个QStyle
对象被用来表示每个组件,一个QStyleOption
对象被用来保存控件的状态。
例如:一个自定义的 ScrollBar
实现了他的 paintEvent
,它调用带有选项“CC_ScrollBar
”的 drawComplexControl
。然后,可以扩展 QProxyStyle
以更改滚动条的外观。
当用户悬停 slider 时,调用 paintEvent
应用新的“悬停”外观,该状态保存在 QStyleOption::state
中。但是对于现在一天的小部件,这种状态不应该立即更新,而是在大约 100-500 毫秒内平滑过渡(动画)。为了使用此转换为小部件设置动画,需要一些值,例如滚动的每个部分的动画的当前状态(qreal
/QColor
?):箭头、底部箭头或 slider 。
在这个“长”的介绍之后,我的问题来了:
是否有变量可以设置动画的状态?我可以用这个新值扩展 QStyleOption
,但当前的实现似乎已经包含动画,我无法找到保存此过渡状态的位置。
我正在寻找规范的答案。
注意:为避免“...的可能重复”,即使稍微相关,这也不是关于如何使用 QAnimation 或创建自定义 Widget 的问题。
最佳答案
样式动画来源于私有(private)QStyleAnimation
( #include "qstyleanimation_p.h"
), 它们是 QAbstractAnimation
因此 QObject
.例如,滚动条样式动画是 QScrollbarStyleAnimation
.
Windows 风格的 drawControl
是这样的获取指向动画的指针:
if (QProgressStyleAnimation *animation =
qobject_cast<QProgressStyleAnimation*>(d->animation(opt->styleObject)))
各种样式对象的动画由样式管理 PIMPL's animation
, startAnimation
和 stopAnimation
方法。定义这些方法的基本 PIMPL 是 QCommonStylePrivate
(#include <private/qcommonstyle_p.h>
)。
您可以按照自己的风格使用它:
从 QCommonStyle
导出您的风格,使用 PIMPL 习语,并从 QCommonStylePrivate
派生你的 pimpl .我有 documented the Qt's PIMPL idiom让它变得更容易。
重用现有样式动画类之一,或使用从 QStyleAnimation
派生您自己的动画类.
利用 QCommonStyle
PIMPL 管理动画的方法。不过,您首先要创建动画实例。
关于c++ - 在哪里保存 QWidget 动画的状态以便在 QStyle 绘制函数中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974434/
在我的代码中有一堆调用试图创建 QIcons从QStyle标准像素图,例如: QIcon groupIcon; groupIcon.addPixmap( style()->standardPixmap
我有一个 QTreeView 并为此使用了 ProxyStyle。 上面的图片只是标题。现在我需要在标题标签旁边绘制上/下箭头(用于排序项目),如图所示。为了将箭头放在正确的位置,我需要知道: 左边距
我正在将我的 GUI 应用程序从 PyQt4 转换为 PyQt5。但是在 PyQt4 中,我们得到了很多 QStyle,比如 plastique , Cleanlooks等等 但是在 PyQt5 中我
QStyle::SH_ToolTip_WakeUpDelay 似乎可以用来设置工具提示唤醒时间。我如何在 C++ 代码中执行此操作? 最佳答案 您可以使用 QProxyStyle 覆盖您正在使用的任何
我正在用 PyQt4 编写 GUI(并迁移到 PyQt5)。这就是我启动 GUI 的方式: if __name__== '__main__': app = QApplication(sys.a
我正在尝试获取父级背景并将其设置为复选框背景色。我有这种绘制复选框的方法: void paint( QPainter* painter, const QStyleOptionV
使用以下代码,我尝试使用 QStyle.drawControl() 渲染一个红色按钮: #include #include class Widget : public QWidget {
我想更改 QStyle::PM_TabBarTabHSpace PyQt 应用程序的属性。我读了 Qt document for QStyle ,但我不确定如何在 PyQt 中正确设置。 非工作代码:
是否可以通过自定义应用程序范围的 QStyle 为 QPushButton 定义默认的最小高度? 我知道这可以使用样式表来实现,但出于性能原因我宁愿不使用它们。 最佳答案 您可能会考虑查看 QAppl
一个QWidget作为一个paintEvent函数负责他的绘图。为了正确实现这个功能,一个QStyle对象被用来表示每个组件,一个QStyleOption对象被用来保存控件的状态。 例如:一个自定义的
这两个类都提供文件夹和文件的标准图标。我应该使用哪一个?它们保证相同吗? 最佳答案 Qt 并不严格保证......然而,在当前的实现中,QFileIconProvider 是使用样式的简写。这不太可能
我正在 Windows 7 Ultimate 32 位上使用 Qt 4.7 编写一个 GUI 应用程序。我想让用户从主菜单更改 GUI 样式。可以从菜单中选择多个 QStyle(QCDEStyle、Q
我使用以下标签样式水平绘制标签栏文本东选项卡位置。文本绘制正常,只要我不设置任何边距QTabBar::标签。在那种情况下,文本方向保持垂直,但有奇怪的偏移。 class TabStyle : publ
我是一名优秀的程序员,十分优秀!