问题标签 [qstyle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - QMessageBox 从哪里获得它的样式指南、字体大小、...?
我实现了一个自定义 QMessageBox,继承自 QDialog。(使用 qt 4.8.6)
现在的问题是所有自定义消息框看起来与 QMessageBox 静态函数完全不同:
- QMessageBox::信息(...)
- QMessageBox::critical(...)
- QMessageBox::问题(...)
- QMessageBox::警告(...)
它们在大小、字体、字体大小、图标、背景(静态 qmessagebox 有两种背景颜色)等方面有所不同...。
我发现的唯一一件事是如何访问操作系统特定的消息框图标。
字体或整个样式是否有类似的东西。
我知道 QMessagebox 使用操作系统特定的样式指南。但我找不到他们。您可以在此处查看源代码。
所以我的问题是如何使从 QDialog 继承的自定义 QMessageBox 看起来像静态 QMessageBox::... 函数?
(如果我可以访问在此静态函数调用中创建的 QMessageBox 对象,我可以读出所有样式和字体参数。但这是不可能的。)
qt - 在 Qt 中使用剪辑
painEvent
如果小部件使用样式表,是否可以在小部件中使用剪辑?
我的问题的背景和原因是我想让小部件在它出现和消失时动画。(类似于调整大小的圆形或正方形,从中心的小区域开始变大)。
我对如何解决这个问题的第一个(也是唯一一个)想法是使用 a 的剪裁QPainter
,以便只绘制所需的区域。
如果我使小部件的背景透明并使用它的原始绘图功能QPainter
就可以正常工作。但是,如果小部件应用了样式表,我该如何解决这个问题?甚至可能吗?
使用的Qt版本是Qt 4.8.6
我的问题是:
- 是否可以通过上述策略实现我想要的?
- 是否也可以以任何方式剪辑所有孩子?
- 我的策略是合适的还是以这种方式解决它是一个坏主意?
- 是否有任何其他想法、最佳实践、Qt 类……可以给我想要的东西?
附加信息
我没有太多代码要显示,因为我坚持使用这种剪裁内容。但这里有一些东西可以让我了解我尝试过的东西:
这行得通。
但以下不会改变任何东西:
此外,我注意到,样式表也被绘制了,即使我完全删除了这style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this);
条线。
qt - 任意选择的 QTreeWidgetItems 的样式悬停和选定颜色
我有一个QTreeWidget
并且我有一个样式表应用于它。我希望其中一些QTreeWidgetItem
s 具有与其他样式表样式项目不同hover
的selected
颜色。normal
我为状态着色,setData(columnNumber, Qt::ForegroundRole, colorName)
但我无法更改悬停和选定状态的颜色。
有谁知道是否有可能以Qt
某种方式实现这一目标?
谢谢!
c++ - 应用程序窗口样式
虽然我的操作系统是 Windows,但我希望我的应用程序看起来像 Mac 应用程序。我知道我可以使用QApplication::setStyle
.
我也知道Qt
提供MacStyle
,因为MacStyle
但是,似乎QMacSytle
没有声明。编译器无法识别它。Qt
网页上说
还有其他方法可以使用该Mac OS
样式窗口吗?因为我需要使用它。
python - How to modify style hint without QProxyStyle?
I use Python bindings of Qt (PySide or PyQt4). They don't have QProxyStyle
.
I want to change the value of a style hint. For example change the SH_Menu_SubMenuPopupDelay
popup delay time of a submenu.
In native C++ Qt I would use a QProxyStyle
and override styleHint
and filter for the style hint of interest and return the value I like. It's done here for example.
But in the Python bindings I use QProxyStyle
is not available. So how can a style hint of an existing style be modified there?
qt - 带有图标+文本的QToolButton:如何使两者居中?
我在自定义QGridLayout小部件中使用多个QToolButton。这些按钮设置为根据分配的默认 QAction 显示图标 + 文本。唯一的问题是内容(图标+文本)总是左对齐的。
内容(图标+文本,在屏幕截图中标记为红色框)应位于按钮的中心(由蓝色框表示)。
在大多数情况下,这很好,因为 Qt 会自动尝试以最小尺寸呈现该按钮。但是我正在拉伸按钮以很好地适应我的 QGridLayout。
有没有办法强制内容在按钮中居中?
PS:我在另一个论坛中发现了以下评论,但这似乎很有侵略性,对我来说还不是很清楚:
您可以尝试使用样式表进行水平对齐,但您可能必须为 QStyle::CE_ToolButtonLabel 实现 QStyle 代理并重新实现 drawControl() 或从 QToolButton 派生,覆盖 paintEvent() 并为标签以外的所有内容调用样式。
macos - Qt中的瞬态滚动条
我想在 Qt 应用程序中使用瞬态滚动条(滚动内容时出现瞬态滚动条,不再需要时消失)。为此,我继承了类QproxyStyle并重新实现了函数styleHint。代码放在下面。文件滚动条.h:
文件滚动条.c:
文件 MainWindow.h:
文件 MainWindow.cpp:
文件 main.cpp:
但是我遇到了一个问题:瞬态滚动条只出现过一次(当文本不适合文本区域时)然后它就消失了,再也没有出现过。
那么我该如何解决这个问题呢?谢谢!
qt - 看不到 pushButton->setIcon(style.standardIcon(QStyle::SP_MessageBoxCritical))
我在 windows7 上使用 Qt4.8.6,我正在尝试将 QStyle::SP_MessageBoxCritical Icon 设置为 QPushButton,如下所示
但我看不到任何图标,但如果我看到
我能够看到箭头后退按钮。
请让我知道任何人都面临这个问题。
提前致谢 :-)
c++ - 在哪里保存 QWidget 动画的状态以用于 QStyle 绘制函数?
AQWidget
作为paintEvent
负责他的绘图的函数。为了正确实现该功能,使用一个QStyle
对象来表示每个组件,并使用一个QStyleOption
对象来保存控件的状态。
例如:一个自定义ScrollBar
实现 his paintEvent
,它drawComplexControl
使用选项“ CC_ScrollBar
”调用。然后,QProxyStyle
可以扩展以更改滚动条的外观。
当用户悬停滑块时,paintEvent
调用哪个应用新的“悬停”外观,哪个状态保存在QStyleOption::state
. 但是对于现在的一天小部件,这个状态不应该立即更新,而是在大约 100-500 毫秒内平滑过渡(动画)。为了使用此转换为小部件设置动画,需要一些值,例如滚动每个部分的动画当前状态 (a qreal
/ ?):顶部箭头、底部箭头或滑块。QColor
在这个“长”的介绍之后,我的问题来了:
是否有变量可以设置此动画的状态?我可以使用这个新值进行扩展QStyleOption
,但当前的实现似乎已经包含动画,我无法找到这个转换状态的保存位置。
我正在寻找一个规范的答案。
注意:为了避免“可能重复...”,即使稍微相关,这也不是关于如何使用 QAnimation 或创建自定义小部件的问题。
qt - 在运行时动态改变 QStyle?
我想在运行时调整现有样式,特别是 QStyle::PM_ToolBarIconSize。这可以做到吗?据我所知,您只能继承 QStyle 并覆盖 pixelMetric()。
编辑 1:在 QStyle::PM_ToolBarIconSize 的特定情况下,我可以使用 QToolBar::setIconSize,但这只会为单个工具栏实例设置图标大小。我想一举改变底层样式提示,以影响所有地方的所有工具栏。QStyle::PM_ToolBarIconSize 可能不是我想要调整的唯一样式,它只是我正在查看的第一个样式,恰好具有“更改此实例的图标大小”功能。
编辑 2:我不能只创建一个新的样式子类,因为当前样式已经是基于样式表的自定义样式。用户可以选择多种样式。我不想创建一堆新样式,只是为了调整几个工具栏图标或菜单高度大小设置。