From 28054f494a2026afe403aed159e99a3f16390d02 Mon Sep 17 00:00:00 2001 From: florian Date: Wed, 20 Aug 2025 09:51:11 +0200 Subject: [PATCH] =?UTF-8?q?meilleur=20r=C3=A9solution=20et=20meilleur=20cl?= =?UTF-8?q?avier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/view/qtView.cpp | 2 +- src/view/virtualKeyboard.cpp | 141 ++++++++++++++++++++++++----------- src/view/virtualKeyboard.hpp | 1 + 3 files changed, 98 insertions(+), 46 deletions(-) diff --git a/src/view/qtView.cpp b/src/view/qtView.cpp index 5e0ba2b..3cb5653 100644 --- a/src/view/qtView.cpp +++ b/src/view/qtView.cpp @@ -57,7 +57,7 @@ QtView::QtView(QWidget* parent) setupUI(); setupVirtualKeyboard(); setWindowTitle("Gestionnaire de Stock - Interface Moderne"); - resize(1200, 800); + showFullScreen(); } QtView::QtView(StockController* controller, QWidget* parent) diff --git a/src/view/virtualKeyboard.cpp b/src/view/virtualKeyboard.cpp index eec9d15..e0bc7c7 100644 --- a/src/view/virtualKeyboard.cpp +++ b/src/view/virtualKeyboard.cpp @@ -10,6 +10,7 @@ VirtualKeyboard::VirtualKeyboard(QWidget* parent) , m_mainLayout(nullptr) , m_keyboardLayout(nullptr) , m_functionLayout(nullptr) + , m_displayEdit(nullptr) , m_targetWidget(nullptr) , m_capsLock(false) , m_shift(false) @@ -20,7 +21,7 @@ VirtualKeyboard::VirtualKeyboard(QWidget* parent) , m_capsLockButton(nullptr) , m_hideButton(nullptr) { - setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); + setWindowFlags(Qt::Window | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); setAttribute(Qt::WA_ShowWithoutActivating); // Initialize key layouts @@ -48,8 +49,17 @@ void VirtualKeyboard::setTargetWidget(QWidget* target) void VirtualKeyboard::showForWidget(QWidget* target) { setTargetWidget(target); - positionKeyboard(); - show(); + + // Initialiser la zone d'affichage avec le contenu actuel + if (QLineEdit* lineEdit = qobject_cast(target)) { + m_displayEdit->setText(lineEdit->text()); + } else if (QTextEdit* textEdit = qobject_cast(target)) { + m_displayEdit->setText(textEdit->toPlainText()); + } else { + m_displayEdit->clear(); + } + + showFullScreen(); raise(); } @@ -57,22 +67,23 @@ void VirtualKeyboard::hideKeyboard() { hide(); m_targetWidget = nullptr; + m_displayEdit->clear(); } void VirtualKeyboard::setupKeyboard() { m_mainLayout = new QVBoxLayout(this); - m_mainLayout->setSpacing(5); - m_mainLayout->setContentsMargins(10, 10, 10, 10); + m_mainLayout->setSpacing(20); + m_mainLayout->setContentsMargins(50, 50, 50, 50); // Header with title and hide button QHBoxLayout* headerLayout = new QHBoxLayout(); QLabel* titleLabel = new QLabel("Clavier Virtuel"); titleLabel->setObjectName("keyboardTitle"); - m_hideButton = new QPushButton("✕"); + m_hideButton = new QPushButton("✕ Fermer"); m_hideButton->setObjectName("hideButton"); - m_hideButton->setFixedSize(30, 30); + m_hideButton->setFixedSize(120, 50); connect(m_hideButton, &QPushButton::clicked, this, &VirtualKeyboard::hideKeyboard); headerLayout->addWidget(titleLabel); @@ -81,6 +92,17 @@ void VirtualKeyboard::setupKeyboard() m_mainLayout->addLayout(headerLayout); + // Zone d'affichage du texte en cours de saisie + m_displayEdit = new QLineEdit(); + m_displayEdit->setObjectName("displayEdit"); + m_displayEdit->setReadOnly(true); + m_displayEdit->setFixedHeight(60); + m_displayEdit->setPlaceholderText("Le texte saisi apparaîtra ici..."); + m_mainLayout->addWidget(m_displayEdit); + + // Add spacer to center keyboard + m_mainLayout->addStretch(1); + // Numeric row setupNumericKeys(); @@ -89,17 +111,21 @@ void VirtualKeyboard::setupKeyboard() // Function keys row setupFunctionKeys(); + + // Add spacer to center keyboard + m_mainLayout->addStretch(1); } void VirtualKeyboard::setupNumericKeys() { QHBoxLayout* numericLayout = new QHBoxLayout(); - numericLayout->setSpacing(3); + numericLayout->setSpacing(10); + numericLayout->addStretch(); // Centrer les touches for (const QString& key : m_numericLayout) { QPushButton* button = new QPushButton(key); button->setObjectName("numericKey"); - button->setFixedSize(45, 45); + button->setFixedSize(80, 80); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_numericKeys.append(button); numericLayout->addWidget(button); @@ -110,11 +136,12 @@ void VirtualKeyboard::setupNumericKeys() for (const QString& key : specialChars) { QPushButton* button = new QPushButton(key); button->setObjectName("specialKey"); - button->setFixedSize(45, 45); + button->setFixedSize(80, 80); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); numericLayout->addWidget(button); } + numericLayout->addStretch(); // Centrer les touches m_mainLayout->addLayout(numericLayout); } @@ -122,43 +149,47 @@ void VirtualKeyboard::setupAlphabeticKeys() { // First row: QWERTYUIOP QHBoxLayout* firstRow = new QHBoxLayout(); - firstRow->setSpacing(3); + firstRow->setSpacing(10); + firstRow->addStretch(); for (int i = 0; i < 10; ++i) { QPushButton* button = new QPushButton(m_qwertyLayout[i]); button->setObjectName("alphabeticKey"); - button->setFixedSize(45, 45); + button->setFixedSize(80, 80); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_alphabeticKeys.append(button); firstRow->addWidget(button); } + firstRow->addStretch(); m_mainLayout->addLayout(firstRow); // Second row: ASDFGHJKL QHBoxLayout* secondRow = new QHBoxLayout(); - secondRow->setSpacing(3); - secondRow->addSpacing(20); // Slight offset + secondRow->setSpacing(10); + secondRow->addStretch(); for (int i = 10; i < 19; ++i) { QPushButton* button = new QPushButton(m_qwertyLayout[i]); button->setObjectName("alphabeticKey"); - button->setFixedSize(45, 45); + button->setFixedSize(80, 80); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_alphabeticKeys.append(button); secondRow->addWidget(button); } + secondRow->addStretch(); m_mainLayout->addLayout(secondRow); // Third row: ZXCVBNM QHBoxLayout* thirdRow = new QHBoxLayout(); - thirdRow->setSpacing(3); + thirdRow->setSpacing(10); + thirdRow->addStretch(); // Shift button m_shiftButton = new QPushButton("⇧"); m_shiftButton->setObjectName("functionKey"); - m_shiftButton->setFixedSize(60, 45); + m_shiftButton->setFixedSize(100, 80); m_shiftButton->setCheckable(true); connect(m_shiftButton, &QPushButton::clicked, this, &VirtualKeyboard::onShiftPressed); thirdRow->addWidget(m_shiftButton); @@ -166,7 +197,7 @@ void VirtualKeyboard::setupAlphabeticKeys() for (int i = 19; i < 26; ++i) { QPushButton* button = new QPushButton(m_qwertyLayout[i]); button->setObjectName("alphabeticKey"); - button->setFixedSize(45, 45); + button->setFixedSize(80, 80); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_alphabeticKeys.append(button); thirdRow->addWidget(button); @@ -175,22 +206,24 @@ void VirtualKeyboard::setupAlphabeticKeys() // Backspace button m_backspaceButton = new QPushButton("⌫"); m_backspaceButton->setObjectName("functionKey"); - m_backspaceButton->setFixedSize(60, 45); + m_backspaceButton->setFixedSize(100, 80); connect(m_backspaceButton, &QPushButton::clicked, this, &VirtualKeyboard::onBackspacePressed); thirdRow->addWidget(m_backspaceButton); + thirdRow->addStretch(); m_mainLayout->addLayout(thirdRow); } void VirtualKeyboard::setupFunctionKeys() { m_functionLayout = new QHBoxLayout(); - m_functionLayout->setSpacing(5); + m_functionLayout->setSpacing(15); + m_functionLayout->addStretch(); // Caps Lock m_capsLockButton = new QPushButton("Caps"); m_capsLockButton->setObjectName("functionKey"); - m_capsLockButton->setFixedSize(60, 45); + m_capsLockButton->setFixedSize(120, 80); m_capsLockButton->setCheckable(true); connect(m_capsLockButton, &QPushButton::clicked, this, &VirtualKeyboard::onCapsLockPressed); m_functionLayout->addWidget(m_capsLockButton); @@ -198,14 +231,14 @@ void VirtualKeyboard::setupFunctionKeys() // Space bar m_spaceButton = new QPushButton("Espace"); m_spaceButton->setObjectName("spaceKey"); - m_spaceButton->setFixedHeight(45); + m_spaceButton->setFixedSize(400, 80); connect(m_spaceButton, &QPushButton::clicked, this, &VirtualKeyboard::onSpacePressed); m_functionLayout->addWidget(m_spaceButton); // Enter m_enterButton = new QPushButton("↵"); m_enterButton->setObjectName("functionKey"); - m_enterButton->setFixedSize(60, 45); + m_enterButton->setFixedSize(120, 80); connect(m_enterButton, &QPushButton::clicked, this, &VirtualKeyboard::onEnterPressed); m_functionLayout->addWidget(m_enterButton); @@ -214,11 +247,12 @@ void VirtualKeyboard::setupFunctionKeys() for (const QString& key : punctuation) { QPushButton* button = new QPushButton(key); button->setObjectName("punctuationKey"); - button->setFixedSize(40, 45); + button->setFixedSize(80, 80); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_functionLayout->addWidget(button); } + m_functionLayout->addStretch(); m_mainLayout->addLayout(m_functionLayout); } @@ -226,24 +260,34 @@ void VirtualKeyboard::applyKeyboardStyling() { setStyleSheet(R"( VirtualKeyboard { - background-color: #2c3e50; - border: 2px solid #34495e; - border-radius: 10px; + background-color: rgba(44, 62, 80, 0.95); + border: 3px solid #34495e; + border-radius: 15px; } #keyboardTitle { color: #ecf0f1; - font-size: 14px; + font-size: 24px; font-weight: bold; - padding: 5px; + padding: 10px; + } + + #displayEdit { + background-color: #34495e; + color: #ecf0f1; + border: 2px solid #5d6d7e; + border-radius: 12px; + font-size: 18px; + padding: 10px; + font-family: monospace; } #hideButton { background-color: #e74c3c; color: white; border: none; - border-radius: 15px; - font-size: 12px; + border-radius: 25px; + font-size: 16px; font-weight: bold; } @@ -258,9 +302,9 @@ void VirtualKeyboard::applyKeyboardStyling() #alphabeticKey, #numericKey { background-color: #34495e; color: #ecf0f1; - border: 1px solid #5d6d7e; - border-radius: 6px; - font-size: 13px; + border: 2px solid #5d6d7e; + border-radius: 12px; + font-size: 20px; font-weight: bold; } @@ -275,15 +319,14 @@ void VirtualKeyboard::applyKeyboardStyling() #functionKey { background-color: #e67e22; color: white; - border: 1px solid #d68910; - border-radius: 6px; - font-size: 12px; + border: 2px solid #d68910; + border-radius: 12px; + font-size: 16px; font-weight: bold; } #functionKey:hover { background-color: #f39c12; - } #functionKey:pressed, #functionKey:checked { background-color: #d35400; @@ -292,9 +335,9 @@ void VirtualKeyboard::applyKeyboardStyling() #spaceKey { background-color: #27ae60; color: white; - border: 1px solid #229954; - border-radius: 6px; - font-size: 12px; + border: 2px solid #229954; + border-radius: 12px; + font-size: 18px; font-weight: bold; } @@ -309,9 +352,9 @@ void VirtualKeyboard::applyKeyboardStyling() #specialKey, #punctuationKey { background-color: #8e44ad; color: white; - border: 1px solid #7d3c98; - border-radius: 6px; - font-size: 11px; + border: 2px solid #7d3c98; + border-radius: 12px; + font-size: 18px; font-weight: bold; } @@ -348,8 +391,12 @@ void VirtualKeyboard::insertTextToTarget(const QString& text) if (QLineEdit* lineEdit = qobject_cast(m_targetWidget)) { lineEdit->insert(text); + // Mettre à jour la zone d'affichage + m_displayEdit->setText(lineEdit->text()); } else if (QTextEdit* textEdit = qobject_cast(m_targetWidget)) { textEdit->insertPlainText(text); + // Mettre à jour la zone d'affichage + m_displayEdit->setText(textEdit->toPlainText()); } } @@ -392,7 +439,7 @@ void VirtualKeyboard::positionKeyboard() void VirtualKeyboard::showEvent(QShowEvent* event) { QWidget::showEvent(event); - positionKeyboard(); + // Le clavier est maintenant en plein écran, pas besoin de positionner } void VirtualKeyboard::hideEvent(QHideEvent* event) @@ -423,10 +470,14 @@ void VirtualKeyboard::onBackspacePressed() if (QLineEdit* lineEdit = qobject_cast(m_targetWidget)) { lineEdit->backspace(); + // Mettre à jour la zone d'affichage + m_displayEdit->setText(lineEdit->text()); } else if (QTextEdit* textEdit = qobject_cast(m_targetWidget)) { QTextCursor cursor = textEdit->textCursor(); cursor.deletePreviousChar(); textEdit->setTextCursor(cursor); + // Mettre à jour la zone d'affichage + m_displayEdit->setText(textEdit->toPlainText()); } } diff --git a/src/view/virtualKeyboard.hpp b/src/view/virtualKeyboard.hpp index ae4680f..f723745 100644 --- a/src/view/virtualKeyboard.hpp +++ b/src/view/virtualKeyboard.hpp @@ -48,6 +48,7 @@ private: QVBoxLayout* m_mainLayout; QGridLayout* m_keyboardLayout; QHBoxLayout* m_functionLayout; + QLineEdit* m_displayEdit; // Zone d'affichage du texte saisi QWidget* m_targetWidget;