From 8307e4eec4a3d23431abed1dd3da7aa2788cfb91 Mon Sep 17 00:00:00 2001 From: greek Date: Fri, 31 May 2024 12:10:00 +0100 Subject: [PATCH] Player area with croupier and player names. --- CMakeLists.txt | 33 +++++++++++++++++ MainWindow.cpp | 16 ++++++++ MainWindow.h | 15 ++++++++ PlayerAreaModel.cpp | 89 +++++++++++++++++++++++++++++++++++++++++++++ PlayerAreaModel.h | 56 ++++++++++++++++++++++++++++ PlayerAreaView.qml | 48 ++++++++++++++++++++++++ Root.qml | 21 +++++++++++ main.cpp | 14 +++++++ 8 files changed, 292 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 MainWindow.cpp create mode 100644 MainWindow.h create mode 100644 PlayerAreaModel.cpp create mode 100644 PlayerAreaModel.h create mode 100644 PlayerAreaView.qml create mode 100644 Root.qml create mode 100644 main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..7469446 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 3.16) + +project(roulette-payout VERSION 1.0.0 LANGUAGES CXX) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(Qt6 6.2 COMPONENTS Core Widgets QuickControls2 Gui REQUIRED) + +qt_standard_project_setup() + +qt_add_executable(roulette-payout + main.cpp + MainWindow.cpp + MainWindow.h + PlayerAreaModel.cpp + PlayerAreaModel.h +) + +qt_add_qml_module(roulette-payout + URI roulette + VERSION 1.0 + RESOURCE_PREFIX "/" + QML_FILES + Root.qml + PlayerAreaView.qml +) + +target_link_libraries(roulette-payout PRIVATE + Qt6::Gui + Qt6::QuickControls2 + Qt6::Quick) diff --git a/MainWindow.cpp b/MainWindow.cpp new file mode 100644 index 0000000..a083649 --- /dev/null +++ b/MainWindow.cpp @@ -0,0 +1,16 @@ +#include +#include +#include +#include +#include +#include + +#include "MainWindow.h" + +MainWindow::MainWindow(QWindow *parent) +{ + QQuickView::setTitle("Roulette Payout"); + + setSource(QUrl("../Root.qml")); + +} diff --git a/MainWindow.h b/MainWindow.h new file mode 100644 index 0000000..f23e679 --- /dev/null +++ b/MainWindow.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + +class MainWindow : public QQuickView +{ + Q_OBJECT + QML_ELEMENT + QML_SINGLETON /* ??? */ + +public: + explicit MainWindow(QWindow *parent = nullptr); + +}; diff --git a/PlayerAreaModel.cpp b/PlayerAreaModel.cpp new file mode 100644 index 0000000..c0aecad --- /dev/null +++ b/PlayerAreaModel.cpp @@ -0,0 +1,89 @@ +#include "PlayerAreaModel.h" + +PlayerAreaModel::PlayerAreaModel(QObject *parent) +{ + playerName1Text = "Click to edit"; + playerName2Text = "Click to edit"; + playerName3Text = "Click to edit"; + playerName4Text = "Click to edit"; + playerName5Text = "Click to edit"; + playerName6Text = "Click to edit"; + playerName7Text = "Click to edit"; +} + +QString PlayerAreaModel::playerName1() +{ + return playerName1Text; +} + +QString PlayerAreaModel::playerName2() +{ + return playerName2Text; +} + +QString PlayerAreaModel::playerName3() +{ + return playerName3Text; +} + +QString PlayerAreaModel::playerName4() +{ + return playerName4Text; +} + +QString PlayerAreaModel::playerName5() +{ + return playerName5Text; +} + +QString PlayerAreaModel::playerName6() +{ + return playerName6Text; +} + +QString PlayerAreaModel::playerName7() +{ + return playerName7Text; +} + +void PlayerAreaModel::setPlayerName1(QString s) +{ + playerName1Text = s; + emit playerName1Changed(); +} + +void PlayerAreaModel::setPlayerName2(QString s) +{ + playerName2Text = s; + emit playerName2Changed(); +} + +void PlayerAreaModel::setPlayerName3(QString s) +{ + playerName3Text = s; + emit playerName3Changed(); +} + +void PlayerAreaModel::setPlayerName4(QString s) +{ + playerName4Text = s; + emit playerName4Changed(); +} + +void PlayerAreaModel::setPlayerName5(QString s) +{ + playerName5Text = s; + emit playerName5Changed(); +} + +void PlayerAreaModel::setPlayerName6(QString s) +{ + playerName6Text = s; + emit playerName6Changed(); +} + +void PlayerAreaModel::setPlayerName7(QString s) +{ + playerName7Text = s; + emit playerName7Changed(); +} diff --git a/PlayerAreaModel.h b/PlayerAreaModel.h new file mode 100644 index 0000000..b18a001 --- /dev/null +++ b/PlayerAreaModel.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include +#include +#include + +class PlayerAreaModel : public QObject +{ + Q_OBJECT + QML_ELEMENT + + Q_PROPERTY(QString playerName1 READ playerName1 WRITE setPlayerName1 NOTIFY playerName1Changed) + Q_PROPERTY(QString playerName2 READ playerName2 WRITE setPlayerName2 NOTIFY playerName2Changed) + Q_PROPERTY(QString playerName3 READ playerName3 WRITE setPlayerName3 NOTIFY playerName3Changed) + Q_PROPERTY(QString playerName4 READ playerName4 WRITE setPlayerName4 NOTIFY playerName4Changed) + Q_PROPERTY(QString playerName5 READ playerName5 WRITE setPlayerName5 NOTIFY playerName5Changed) + Q_PROPERTY(QString playerName6 READ playerName6 WRITE setPlayerName6 NOTIFY playerName6Changed) + Q_PROPERTY(QString playerName7 READ playerName7 WRITE setPlayerName7 NOTIFY playerName7Changed) + +public: + explicit PlayerAreaModel(QObject *parent = nullptr); + QString playerName1(); + QString playerName2(); + QString playerName3(); + QString playerName4(); + QString playerName5(); + QString playerName6(); + QString playerName7(); + void setPlayerName1(QString s); + void setPlayerName2(QString s); + void setPlayerName3(QString s); + void setPlayerName4(QString s); + void setPlayerName5(QString s); + void setPlayerName6(QString s); + void setPlayerName7(QString s); + +signals: + void playerName1Changed(); + void playerName2Changed(); + void playerName3Changed(); + void playerName4Changed(); + void playerName5Changed(); + void playerName6Changed(); + void playerName7Changed(); + +private: + QString playerName1Text; + QString playerName2Text; + QString playerName3Text; + QString playerName4Text; + QString playerName5Text; + QString playerName6Text; + QString playerName7Text; +}; + diff --git a/PlayerAreaView.qml b/PlayerAreaView.qml new file mode 100644 index 0000000..371b5fd --- /dev/null +++ b/PlayerAreaView.qml @@ -0,0 +1,48 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts + +import roulette + +Item { + PlayerAreaModel { + id: playerAreaModel + } + ColumnLayout { + Text { + text: "Croupier" + } + TextField { + text: playerAreaModel.playerName1 + onEditingFinished: playerAreaModel.playerName1 = text + selectByMouse: true + } + TextField { + text: playerAreaModel.playerName2 + onEditingFinished: playerAreaModel.playerName2 = text + } + TextField { + text: playerAreaModel.playerName3 + onEditingFinished: playerAreaModel.playerName3 = text + } + TextField { + text: playerAreaModel.playerName4 + onEditingFinished: playerAreaModel.playerName4 = text + } + TextField { + text: playerAreaModel.playerName5 + onEditingFinished: playerAreaModel.playerName5 = text + } + TextField { + text: playerAreaModel.playerName6 + onEditingFinished: playerAreaModel.playerName6 = text + } + TextField { + text: playerAreaModel.playerName7 + onEditingFinished: playerAreaModel.playerName7 = text + } + Text { + text: playerAreaModel.playerName1 + } + } +} diff --git a/Root.qml b/Root.qml new file mode 100644 index 0000000..bf809bd --- /dev/null +++ b/Root.qml @@ -0,0 +1,21 @@ +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts + +import roulette + +Pane { + id: rootWindow + + height: 500 + width: 1000 + PlayerAreaView { + } + /* + * Dentro do Text não podes mudar directamente + * o text do playerAreaModel; + * Para fazer isso tens que mandar um sinal + * que está ligado a um slot do playerAreaModel + * que vá mudar esse atributo + */ +} diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..3584545 --- /dev/null +++ b/main.cpp @@ -0,0 +1,14 @@ +#include +#include + +#include "MainWindow.h" + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + MainWindow view; + view.show(); + + return app.exec(); +}