import Solitare import QtQuick import QtQuick.Controls import QtQuick.Layouts ApplicationWindow { width: 800 height: 600 visible: true title: qsTr("Solitaire") 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 { 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 } } } } }