将我自己的 QML 按钮插入 GridLayout

Posted

技术标签:

【中文标题】将我自己的 QML 按钮插入 GridLayout【英文标题】:Insert my own QML Button into a GridLayout 【发布时间】:2019-12-30 15:30:51 【问题描述】:

我是 Qt 的新手,想在 GridLayout 中有一些按钮(在单独的 .qml 文件中制作,带有 Rectangle...)。不幸的是,它似乎没有将按钮定位到不同的单元格。一切都在第一行/列。是否有必要的 ID 变量,如数组?还是 QML 动态对象? 这里是按钮:

Item 
property string textOnButton: "Test"
property int w: 130
property int h: 100

Rectangle
    id: emptyRectangle
    width: parent.w
    height: parent.h
    Text 
        text: parent.parent.textOnButton + parent.index
        anchors.horizontalCenter: parent.parent.horizontalCenter
        topPadding: 6
        font.pixelSize: 30
    
 

还有这里的 GridLayout 应该放置几次 Item :

GridLayout
    id:grid1
    rows: 3
    Layout.margins: 20
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.verticalCenter: parent.verticalCenter
    columnSpacing: 10
    rowSpacing: 10
    EmptyButton
        id: eins
        textOnButton: "HELP"
    
    EmptyButton
        id: zwei
        textOnButton: "HELP"
    


稍后我想在按钮上使用不同的颜色/文本并切换不同的灯光。 感谢您的帮助!

【问题讨论】:

你想做什么?您认为正确的行为是什么?您希望按钮的尺寸是多少?该项目在您的代码中没有大小。用 Item 包裹 Rectangle 有什么意义?您是否尝试将您的项目放入所有单元格中? @folibis 大小并不重要,就像我的代码中的其他一些信息一样。我只想将一些矩形作为按钮(在 EmptyButton.qml 中制作)放置在具有不同 ID 的网格布局中,以触发以后的不同操作。但我不知道如何获得不同的 ID,同时这显然是 gridlayout 没有将我的 EmptyButton 放入不同的单元格的问题。在代码中现在只有一个,但如果我使用中继器,例如。抱歉,我的问题没有准确表述 显然,如果我不使用项目而只使用矩形,它会将它们放入网格中 我写了一个 qml 教程,可能对你有用。请参阅github.com/xxxcucus/planes/releases 该文件名为 TheGameOfPlanes.0.2.3.pdf 请参阅 PlanesQml 章节。您有 GridLayout、GridView、GridView 的示例。希望对您有所帮助! 【参考方案1】:

您需要设置 GridLayout 和所有其他项目的宽度和高度

GridLayout
    width: 500
    height: 500
    id:grid1
    rows: 3
    Layout.margins: 20
    anchors.horizontalCenter: parent.horizontalCenter
    anchors.verticalCenter: parent.verticalCenter
    columnSpacing: 10
    rowSpacing: 10
    EmptyButton
        id: eins
        textOnButton: "HELP"
    
    EmptyButton
        id: zwei
        textOnButton: "HELP"
    


【讨论】:

以上是关于将我自己的 QML 按钮插入 GridLayout的主要内容,如果未能解决你的问题,请参考以下文章

QML GridLayout 不遵守我指定的单元格排列

如何在 GridLayout - QML 中移动单元格?

Qml GridLayout如何指定列宽?

QGridLayout里添加这一个QPushButton怎么让其占两行

使用 GridLayout 内的按钮将 BoxLayout 居中

覆盖 QML 行的 MouseArea(或自动调整大小的图像+文本)