commit 8307e4eec4a3d23431abed1dd3da7aa2788cfb91 Author: greek Date: Fri May 31 12:10:00 2024 +0100 Player area with croupier and player names. 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(); +}