import Solitare import QtQuick import QtQuick.Controls import QtQuick.Layouts ApplicationWindow { width: 750 height: 650 visible: true title: qsTr("Solitare") ScoreBar { id: scoreBar height: 50 anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right } // Show the foundation piles, throwaway pile & the draw stack on the first row Item { id: firstRow height: 120 anchors.top: scoreBar.bottom anchors.left: parent.left anchors.right: parent.right Row { spacing: 0 anchors.fill: parent anchors.margins: 10 // Left row (with the foundation piles) Row { spacing: 15 anchors.left: parent.left Repeater { model: 4 // Each of the 4 suits CardModel { required property int index; // passed from repeater card: gameState.foundation[index].length > 0 ? gameState.foundation[index] : null isFaceDown: false } } } // Spacer to push the second row to the right Item { Layout.fillWidth: true } // Right row (with throwaway and draw piles) Row { spacing: 20 anchors.right: parent.right // Throwaway pile (last 3 cards visible with overlap) Row { // This allows makes the cards overlap spacing: -60 Repeater { model: Math.min(gameState.throwawayPile.length, 3) delegate: CardModel { required property int index // passed from repeater card: gameState.throwawayPile[gameState.throwawayPile.length - 1 - index] isFaceDown: false } } } // Draw pile (only the top card is shown) CardModel { card: gameState.drawPile.length > 0 ? gameState.drawPile[gameState.drawPile.length - 1] : null isFaceDown: true } } } } // Second row, with the individual columns Row { spacing: 10 anchors.top: firstRow.bottom anchors.horizontalCenter: parent.horizontalCenter anchors.topMargin: 50 Repeater { model: gameState.columns.length // Make a column for each slot delegate: Column { required property int index // passed from repeater spacing: -80 // Overlap Repeater { model: gameState.columns[parent.index].length delegate: CardModel { required property int index card: gameState.columns[parent.index][index].card isFaceDown: !gameState.columns[parent.index][index].revealed } } } } } }