QT自定义按钮
Customise button in QT
我需要在 qt 中创建一个切换按钮,它应该如下图所示。它应该在打开时显示 ON 图像并保持此状态,直到再次切换。它应该在关闭的情况下显示关闭图像。请帮我解决这个问题。
最简单的方法是将开关图像作为资源添加到您的项目中
然后将按钮设置为 checkable 并在其属性中设置选择或不选择时要呈现的图像..(在 icon -> 选择了并且选择了关闭)
当然,您已经创建了具有适当几何形状的图像...在屏幕截图中,它们看起来很小,因为我从您的 post 那里借用了它们。
:)
您可以将图像用作图标(遗憾的是,默认情况下它不会随按钮缩放),创建一个 class 来在绘制事件的处理程序中绘制这些图像,或者您可以使用那些QSS 样式表 中的图像。 QSS 是 Qt GUI 元素的 CSS 2.0 模拟。
请注意,在使用样式表后,对所述元素的视觉效果的所有更改也应通过样式表的更改来完成。
可以通过右键单击小部件并选择“更改样式表”通过表单编辑器设置这些样式,或者通过调用 setStyleSheet
直接通过代码设置,具体取决于您喜欢的工作流程。
button->setStyleSheet(
"QPushButton { border-image: url(:/Resources/chbUnchecked.png); }"
"QPushButton::checked { border-image: url(:/Resources/chbChecked.png); }" );
border-image
将图像缩放到边界限制,替换标准 border.There 也是一个 background-image
,它会定期重复填充小部件的表面。
要限制此更改仅适用于可检查的按钮:
button->setStyleSheet(
"QPushButton[checkable="true"] { border-image: url(:/Resources/chbUnchecked.png); }"
"QPushButton::checked[checkable="true"] { border-image: url(:/Resources/chbChecked.png); }" );
:/Resources/
是应用程序资源中的路径。
QSS 语法:https://doc.qt.io/Qt-5/stylesheet-syntax.html
请注意,QSS 有选择器,因此它具有与 CSS 相同的“级联”能力。您可以根据 GUI 上的层次结构位置、class-继承、class 名称、准状态和名称批量分配样式。
如果您将上面的样式设置为 window,则 window 中 QPushButton
的所有实例都将使用该样式。如果您为这样的按钮定义一个新的 class,您可以使用它的名称而不是标准按钮 class,尽管基础 class 的 QSS 将适用于它。
我需要在 qt 中创建一个切换按钮,它应该如下图所示。它应该在打开时显示 ON 图像并保持此状态,直到再次切换。它应该在关闭的情况下显示关闭图像。请帮我解决这个问题。
最简单的方法是将开关图像作为资源添加到您的项目中 然后将按钮设置为 checkable 并在其属性中设置选择或不选择时要呈现的图像..(在 icon -> 选择了并且选择了关闭)
当然,您已经创建了具有适当几何形状的图像...在屏幕截图中,它们看起来很小,因为我从您的 post 那里借用了它们。 :)
您可以将图像用作图标(遗憾的是,默认情况下它不会随按钮缩放),创建一个 class 来在绘制事件的处理程序中绘制这些图像,或者您可以使用那些QSS 样式表 中的图像。 QSS 是 Qt GUI 元素的 CSS 2.0 模拟。
请注意,在使用样式表后,对所述元素的视觉效果的所有更改也应通过样式表的更改来完成。
可以通过右键单击小部件并选择“更改样式表”通过表单编辑器设置这些样式,或者通过调用 setStyleSheet
直接通过代码设置,具体取决于您喜欢的工作流程。
button->setStyleSheet(
"QPushButton { border-image: url(:/Resources/chbUnchecked.png); }"
"QPushButton::checked { border-image: url(:/Resources/chbChecked.png); }" );
border-image
将图像缩放到边界限制,替换标准 border.There 也是一个 background-image
,它会定期重复填充小部件的表面。
要限制此更改仅适用于可检查的按钮:
button->setStyleSheet(
"QPushButton[checkable="true"] { border-image: url(:/Resources/chbUnchecked.png); }"
"QPushButton::checked[checkable="true"] { border-image: url(:/Resources/chbChecked.png); }" );
:/Resources/
是应用程序资源中的路径。
QSS 语法:https://doc.qt.io/Qt-5/stylesheet-syntax.html
请注意,QSS 有选择器,因此它具有与 CSS 相同的“级联”能力。您可以根据 GUI 上的层次结构位置、class-继承、class 名称、准状态和名称批量分配样式。
如果您将上面的样式设置为 window,则 window 中 QPushButton
的所有实例都将使用该样式。如果您为这样的按钮定义一个新的 class,您可以使用它的名称而不是标准按钮 class,尽管基础 class 的 QSS 将适用于它。