Qml 样式按钮

Posted

技术标签:

【中文标题】Qml 样式按钮【英文标题】:Qml style Button 【发布时间】:2018-04-21 20:19:58 【问题描述】:

我的页面有结构,我想为我的按钮添加一些ButtonStyle(我按照文档中的示例),现在我有一个问题,为什么我不能为这个按钮添加style。下面是我的页面结构

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import QtQuick.Controls.Styles 1.4
Page

...
header: ToolBar 
    ...
    RowLayout
        Button 
        ...
        style: ButtonStyle 
            background: Rectangle 
            implicitWidth: 100
            implicitHeight: 25
            border.width: control.activeFocus ? 2 : 1
            border.color: "#888"
            radius: 4
            gradient: Gradient 
                GradientStop  position: 0 ; color: control.pressed ? "#ccc" : "#eee" 
                GradientStop  position: 1 ; color: control.pressed ? "#aaa" : "#ccc" 
                
            
        
        
    


【问题讨论】:

【参考方案1】:

您选择了 QtQuick Controls 2 Button (import QtQuick.Controls 2.0),可以直接使用 background 进行样式设置(即不需要 QtQuick.Controls.Styles)...Customizing Qt Quick Controls 2。另一方面,如果您想使用QtQuick.Controls 1.x 按钮,则需要将导入更改为import QtQuick.Controls 1.4 以及QtQuick.Controls.Styles 1.4,您的样式将起作用...Qt Quick Controls Styles。

使用 QtQuick Controls 2,您可以直接使用 background 设置 Button 的样式,如下所示:

Button 
    id:control
    background: Rectangle 
        implicitWidth: 100
        implicitHeight: 25
        border.width: control.activeFocus ? 2 : 1
        border.color: "#888"
        radius: 4
        gradient: Gradient 
            GradientStop  position: 0 ; color: control.pressed ? "#ccc" : "#eee" 
            GradientStop  position: 1 ; color: control.pressed ? "#aaa" : "#ccc" 
        
    

【讨论】:

以上是关于Qml 样式按钮的主要内容,如果未能解决你的问题,请参考以下文章

QML 从子目录导入样式文件

尝试通过插入子样式项来设置 Qt QML 项的样式

Qt 5 样式:动态加载 qml 文件

PySide2 + QML:QApplication:通过了无效的样式覆盖,忽略它

QML ProgressBar 无效的属性名称“样式”

QtQuick.Controls 2.2 中的 QML 组合框样式问题