如何在Qt-QML中创建方形按钮?

如何在Qt-QML中创建方形按钮?,qt,button,qml,Qt,Button,Qml,我试图在QML中创建一个简单的方形按钮,但它并没有按预期工作。以下是代码的最低数量: import QtQuick 2.7 import QtQuick.Controls 2.1 Page { id: app width: 400 height: 640 Button { width: 48 height: 48 } } 产生这个结果的原因是: 知道发生了什么吗?我浏览了文档,试图通过设置来设置implicitWi

我试图在QML中创建一个简单的方形按钮,但它并没有按预期工作。以下是代码的最低数量:

import QtQuick 2.7
import QtQuick.Controls 2.1

Page {
    id: app
    width: 400
    height: 640


    Button {
        width: 48
        height: 48
    }
}
产生这个结果的原因是:

知道发生了什么吗?我浏览了文档,试图通过设置来设置
implicitWidth
implicitHeight
,但这会阻止按钮的内置悬停和阴影功能

Button {
    background: Rectangle {
        implicitWidth: 48
        implicitHeight: 48
        color: "gray" 
    }
}
结果:

有没有办法在不明确定义背景项的情况下设置所需的大小


编辑: 我还尝试将所有
填充设置为0,以查看填充是否存在问题:

Button {
    width: 48
    height: 48

    topPadding: 0
    bottomPadding: 0
    leftPadding: 0
    rightPadding: 0
}

以及按照同事的建议添加文本元素以查看其放置位置:

Button {
    width: 48
    height: 48

    Text {
        text: "hello"
    }
}

文本位置向我暗示,按钮可能会超出可见灰色矩形的上限。会是这样吗

另一个注意事项:我使用的仿真器是安装在Qt Creator中的AppStudio for ArcGIS仿真器。Qt 5.10.0,Windows 10

知道发生了什么吗?我浏览了文档,试图通过定义的背景项设置implicitWidth和implicitHeight,但这会阻止按钮的内置悬停和阴影功能

这可能是导致它不成正方形的原因。将每个填充属性设置为0(或相等值)应有助于:

leftPadding: 0
rightPadding: 0
topPadding: 0
bottomPadding: 0
知道发生了什么吗?我浏览了文档,试图通过定义的背景项设置implicitWidth和implicitHeight,但这会阻止按钮的内置悬停和阴影功能

这可能是导致它不成正方形的原因。将每个填充属性设置为0(或相等值)应有助于:

leftPadding: 0
rightPadding: 0
topPadding: 0
bottomPadding: 0

Mitch在正确的轨道上,有一些填充,但背景矩形也有以下线条:

height:parent.height-12

这有点麻烦。你可以通过将按钮的高度设置为比宽度高12(同时改变填充)来解决这个问题,但我不建议这样做


相反,就像他们建议的那样,我将制作MyButton.qml并在那里复制材质样式Button.qml代码,只需更改背景高度和控件填充。这使得以后更容易进行更多的样式更改,因为您不需要更改应用程序中的所有按钮。

Mitch在正确的轨道上,有一些填充,但背景矩形也有以下线条:

height:parent.height-12

这有点麻烦。你可以通过将按钮的高度设置为比宽度高12(同时改变填充)来解决这个问题,但我不建议这样做


相反,就像他们建议的那样,我将制作MyButton.qml并在那里复制材质样式Button.qml代码,只需更改背景高度和控件填充。这使得以后更容易进行更多的样式更改,因为您不需要更改应用程序中的所有按钮。

使用此代码,我可以得到正方形、等边按钮。Windows10,Qt5。11@folibis我对绘制非等边正方形的代码更感兴趣;)使用这个代码,我得到了正方形,等边的按钮。Windows10,Qt5。11@folibis我对绘制非等边正方形的代码更感兴趣;)谢谢@Mitch,我也试过了,没用。将更新问题以包含示例。谢谢@Mitch,我也尝试过,但没有效果。将更新问题以包含示例。此方法可以找到问题的根源。将+12添加到高度会使按钮显示为方形。我仍然看到顶部的填充问题,所以创建自定义文件可能是最好的选择。这种方法可以找到问题的根源。将+12添加到高度会使按钮显示为方形。我仍然看到顶部的填充问题,所以创建自定义文件可能是最好的选择。