From 5c6b908736b0bbf30c6eb897a608dd3c54c0d057 Mon Sep 17 00:00:00 2001 From: florian Date: Wed, 20 Aug 2025 10:06:19 +0200 Subject: [PATCH] plus grand bouton --- src/view/qtView.cpp | 79 ++++++++++++++------------ src/view/virtualKeyboard.cpp | 104 +++++++++++++++++++++++------------ src/view/virtualKeyboard.hpp | 5 ++ 3 files changed, 118 insertions(+), 70 deletions(-) diff --git a/src/view/qtView.cpp b/src/view/qtView.cpp index 3cb5653..b0c984a 100644 --- a/src/view/qtView.cpp +++ b/src/view/qtView.cpp @@ -81,8 +81,8 @@ QtView::~QtView() void QtView::setupUI() { m_mainLayout = new QVBoxLayout(this); - m_mainLayout->setSpacing(15); - m_mainLayout->setContentsMargins(20, 20, 20, 20); + m_mainLayout->setSpacing(25); + m_mainLayout->setContentsMargins(30, 30, 30, 30); // Header with title and control buttons QHBoxLayout* headerLayout = new QHBoxLayout(); @@ -398,14 +398,14 @@ void QtView::applyModernStyling() setStyleSheet(R"( QWidget { font-family: 'Segoe UI', Arial, sans-serif; - font-size: 11px; + font-size: 16px; } #titleLabel { - font-size: 24px; + font-size: 32px; font-weight: bold; color: #2c3e50; - padding: 10px; + padding: 15px; } #mainTabWidget::pane { @@ -421,13 +421,13 @@ void QtView::applyModernStyling() QTabBar::tab { background-color: #ecf0f1; color: #2c3e50; - padding: 12px 20px; + padding: 18px 30px; margin-right: 3px; - font-size: 13px; + font-size: 18px; font-weight: bold; border-top-left-radius: 8px; border-top-right-radius: 8px; - min-width: 120px; + min-width: 180px; } QTabBar::tab:selected { @@ -440,13 +440,13 @@ void QtView::applyModernStyling() } QGroupBox { - font-size: 14px; + font-size: 18px; font-weight: bold; color: #2c3e50; border: 2px solid #bdc3c7; border-radius: 8px; - margin-top: 15px; - padding-top: 15px; + margin-top: 20px; + padding-top: 20px; } QGroupBox::title { @@ -473,11 +473,11 @@ void QtView::applyModernStyling() } QLineEdit, QSpinBox, QComboBox { - padding: 8px 12px; + padding: 12px 18px; border: 2px solid #bdc3c7; border-radius: 6px; - font-size: 12px; - min-height: 20px; + font-size: 16px; + min-height: 30px; } QLineEdit:focus, QSpinBox:focus, QComboBox:focus { @@ -489,10 +489,11 @@ void QtView::applyModernStyling() background-color: #27ae60; color: white; border: none; - padding: 12px 20px; - border-radius: 6px; - font-size: 13px; + padding: 18px 30px; + border-radius: 8px; + font-size: 18px; font-weight: bold; + min-height: 50px; } #createButton:hover { @@ -507,10 +508,11 @@ void QtView::applyModernStyling() background-color: #e74c3c; color: white; border: none; - padding: 12px 20px; - border-radius: 6px; - font-size: 13px; + padding: 18px 30px; + border-radius: 8px; + font-size: 18px; font-weight: bold; + min-height: 50px; } #deleteButton:hover { @@ -525,10 +527,11 @@ void QtView::applyModernStyling() background-color: #3498db; color: white; border: none; - padding: 12px 20px; - border-radius: 6px; - font-size: 13px; + padding: 18px 30px; + border-radius: 8px; + font-size: 18px; font-weight: bold; + min-height: 50px; } #showButton:hover { @@ -543,10 +546,11 @@ void QtView::applyModernStyling() background-color: #f39c12; color: white; border: none; - padding: 12px 20px; - border-radius: 6px; - font-size: 13px; + padding: 18px 30px; + border-radius: 8px; + font-size: 18px; font-weight: bold; + min-height: 50px; } #moveButton:hover { @@ -561,10 +565,11 @@ void QtView::applyModernStyling() background-color: #17a2b8; color: white; border: none; - padding: 8px 16px; - border-radius: 6px; - font-size: 12px; + padding: 15px 25px; + border-radius: 8px; + font-size: 16px; font-weight: bold; + min-height: 45px; } #refreshButton:hover { @@ -575,10 +580,11 @@ void QtView::applyModernStyling() background-color: #6c757d; color: white; border: none; - padding: 8px 16px; - border-radius: 6px; - font-size: 12px; + padding: 15px 25px; + border-radius: 8px; + font-size: 16px; font-weight: bold; + min-height: 45px; } #exitButton:hover { @@ -587,12 +593,12 @@ void QtView::applyModernStyling() #outputDisplay { font-family: 'Consolas', 'Monaco', monospace; - font-size: 11px; + font-size: 14px; background-color: #f8f9fa; border: 2px solid #dee2e6; border-radius: 6px; - padding: 12px; - line-height: 1.4; + padding: 15px; + line-height: 1.6; } QLabel { @@ -1001,7 +1007,8 @@ void QtView::onExit() void QtView::setupVirtualKeyboard() { - m_virtualKeyboard = new VirtualKeyboard(); + m_virtualKeyboard = new VirtualKeyboard(this); // Passer 'this' comme parent + m_virtualKeyboard->hide(); // Le cacher initialement } void QtView::connectTextFieldEvents() diff --git a/src/view/virtualKeyboard.cpp b/src/view/virtualKeyboard.cpp index e0bc7c7..931f45a 100644 --- a/src/view/virtualKeyboard.cpp +++ b/src/view/virtualKeyboard.cpp @@ -3,7 +3,11 @@ #include #include #include +#include #include +#include +#include +#include VirtualKeyboard::VirtualKeyboard(QWidget* parent) : QWidget(parent) @@ -21,8 +25,9 @@ VirtualKeyboard::VirtualKeyboard(QWidget* parent) , m_capsLockButton(nullptr) , m_hideButton(nullptr) { - setWindowFlags(Qt::Window | Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint); + // Ne pas créer de fenêtre séparée, utiliser le parent setAttribute(Qt::WA_ShowWithoutActivating); + setAutoFillBackground(true); // Permettre le fond personnalisé // Initialize key layouts m_qwertyLayout << "q" << "w" << "e" << "r" << "t" << "y" << "u" << "i" << "o" << "p" @@ -59,7 +64,12 @@ void VirtualKeyboard::showForWidget(QWidget* target) m_displayEdit->clear(); } - showFullScreen(); + // Positionner le clavier comme overlay sur l'application parent + if (parentWidget()) { + setGeometry(parentWidget()->rect()); + } + + show(); raise(); } @@ -83,7 +93,7 @@ void VirtualKeyboard::setupKeyboard() m_hideButton = new QPushButton("✕ Fermer"); m_hideButton->setObjectName("hideButton"); - m_hideButton->setFixedSize(120, 50); + m_hideButton->setFixedSize(180, 70); connect(m_hideButton, &QPushButton::clicked, this, &VirtualKeyboard::hideKeyboard); headerLayout->addWidget(titleLabel); @@ -96,7 +106,7 @@ void VirtualKeyboard::setupKeyboard() m_displayEdit = new QLineEdit(); m_displayEdit->setObjectName("displayEdit"); m_displayEdit->setReadOnly(true); - m_displayEdit->setFixedHeight(60); + m_displayEdit->setFixedHeight(80); m_displayEdit->setPlaceholderText("Le texte saisi apparaîtra ici..."); m_mainLayout->addWidget(m_displayEdit); @@ -119,13 +129,13 @@ void VirtualKeyboard::setupKeyboard() void VirtualKeyboard::setupNumericKeys() { QHBoxLayout* numericLayout = new QHBoxLayout(); - numericLayout->setSpacing(10); + numericLayout->setSpacing(15); numericLayout->addStretch(); // Centrer les touches for (const QString& key : m_numericLayout) { QPushButton* button = new QPushButton(key); button->setObjectName("numericKey"); - button->setFixedSize(80, 80); + button->setFixedSize(100, 100); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_numericKeys.append(button); numericLayout->addWidget(button); @@ -136,7 +146,7 @@ void VirtualKeyboard::setupNumericKeys() for (const QString& key : specialChars) { QPushButton* button = new QPushButton(key); button->setObjectName("specialKey"); - button->setFixedSize(80, 80); + button->setFixedSize(100, 100); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); numericLayout->addWidget(button); } @@ -149,13 +159,13 @@ void VirtualKeyboard::setupAlphabeticKeys() { // First row: QWERTYUIOP QHBoxLayout* firstRow = new QHBoxLayout(); - firstRow->setSpacing(10); + firstRow->setSpacing(15); firstRow->addStretch(); for (int i = 0; i < 10; ++i) { QPushButton* button = new QPushButton(m_qwertyLayout[i]); button->setObjectName("alphabeticKey"); - button->setFixedSize(80, 80); + button->setFixedSize(100, 100); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_alphabeticKeys.append(button); firstRow->addWidget(button); @@ -166,13 +176,13 @@ void VirtualKeyboard::setupAlphabeticKeys() // Second row: ASDFGHJKL QHBoxLayout* secondRow = new QHBoxLayout(); - secondRow->setSpacing(10); + secondRow->setSpacing(15); secondRow->addStretch(); for (int i = 10; i < 19; ++i) { QPushButton* button = new QPushButton(m_qwertyLayout[i]); button->setObjectName("alphabeticKey"); - button->setFixedSize(80, 80); + button->setFixedSize(100, 100); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_alphabeticKeys.append(button); secondRow->addWidget(button); @@ -183,13 +193,13 @@ void VirtualKeyboard::setupAlphabeticKeys() // Third row: ZXCVBNM QHBoxLayout* thirdRow = new QHBoxLayout(); - thirdRow->setSpacing(10); + thirdRow->setSpacing(15); thirdRow->addStretch(); // Shift button m_shiftButton = new QPushButton("⇧"); m_shiftButton->setObjectName("functionKey"); - m_shiftButton->setFixedSize(100, 80); + m_shiftButton->setFixedSize(120, 100); m_shiftButton->setCheckable(true); connect(m_shiftButton, &QPushButton::clicked, this, &VirtualKeyboard::onShiftPressed); thirdRow->addWidget(m_shiftButton); @@ -197,7 +207,7 @@ void VirtualKeyboard::setupAlphabeticKeys() for (int i = 19; i < 26; ++i) { QPushButton* button = new QPushButton(m_qwertyLayout[i]); button->setObjectName("alphabeticKey"); - button->setFixedSize(80, 80); + button->setFixedSize(100, 100); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_alphabeticKeys.append(button); thirdRow->addWidget(button); @@ -206,7 +216,7 @@ void VirtualKeyboard::setupAlphabeticKeys() // Backspace button m_backspaceButton = new QPushButton("⌫"); m_backspaceButton->setObjectName("functionKey"); - m_backspaceButton->setFixedSize(100, 80); + m_backspaceButton->setFixedSize(120, 100); connect(m_backspaceButton, &QPushButton::clicked, this, &VirtualKeyboard::onBackspacePressed); thirdRow->addWidget(m_backspaceButton); @@ -217,13 +227,13 @@ void VirtualKeyboard::setupAlphabeticKeys() void VirtualKeyboard::setupFunctionKeys() { m_functionLayout = new QHBoxLayout(); - m_functionLayout->setSpacing(15); + m_functionLayout->setSpacing(20); m_functionLayout->addStretch(); // Caps Lock m_capsLockButton = new QPushButton("Caps"); m_capsLockButton->setObjectName("functionKey"); - m_capsLockButton->setFixedSize(120, 80); + m_capsLockButton->setFixedSize(150, 100); m_capsLockButton->setCheckable(true); connect(m_capsLockButton, &QPushButton::clicked, this, &VirtualKeyboard::onCapsLockPressed); m_functionLayout->addWidget(m_capsLockButton); @@ -231,14 +241,14 @@ void VirtualKeyboard::setupFunctionKeys() // Space bar m_spaceButton = new QPushButton("Espace"); m_spaceButton->setObjectName("spaceKey"); - m_spaceButton->setFixedSize(400, 80); + m_spaceButton->setFixedSize(500, 100); 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(120, 80); + m_enterButton->setFixedSize(150, 100); connect(m_enterButton, &QPushButton::clicked, this, &VirtualKeyboard::onEnterPressed); m_functionLayout->addWidget(m_enterButton); @@ -247,7 +257,7 @@ void VirtualKeyboard::setupFunctionKeys() for (const QString& key : punctuation) { QPushButton* button = new QPushButton(key); button->setObjectName("punctuationKey"); - button->setFixedSize(80, 80); + button->setFixedSize(100, 100); connect(button, &QPushButton::clicked, this, &VirtualKeyboard::onKeyPressed); m_functionLayout->addWidget(button); } @@ -258,18 +268,18 @@ void VirtualKeyboard::setupFunctionKeys() void VirtualKeyboard::applyKeyboardStyling() { + // Utiliser une palette pour le fond au lieu du stylesheet + QPalette palette = this->palette(); + palette.setColor(QPalette::Window, QColor(44, 62, 80, 250)); + setPalette(palette); + setStyleSheet(R"( - VirtualKeyboard { - background-color: rgba(44, 62, 80, 0.95); - border: 3px solid #34495e; - border-radius: 15px; - } #keyboardTitle { color: #ecf0f1; - font-size: 24px; + font-size: 28px; font-weight: bold; - padding: 10px; + padding: 15px; } #displayEdit { @@ -277,8 +287,8 @@ void VirtualKeyboard::applyKeyboardStyling() color: #ecf0f1; border: 2px solid #5d6d7e; border-radius: 12px; - font-size: 18px; - padding: 10px; + font-size: 22px; + padding: 15px; font-family: monospace; } @@ -287,7 +297,7 @@ void VirtualKeyboard::applyKeyboardStyling() color: white; border: none; border-radius: 25px; - font-size: 16px; + font-size: 18px; font-weight: bold; } @@ -304,7 +314,7 @@ void VirtualKeyboard::applyKeyboardStyling() color: #ecf0f1; border: 2px solid #5d6d7e; border-radius: 12px; - font-size: 20px; + font-size: 24px; font-weight: bold; } @@ -321,7 +331,7 @@ void VirtualKeyboard::applyKeyboardStyling() color: white; border: 2px solid #d68910; border-radius: 12px; - font-size: 16px; + font-size: 18px; font-weight: bold; } @@ -337,7 +347,7 @@ void VirtualKeyboard::applyKeyboardStyling() color: white; border: 2px solid #229954; border-radius: 12px; - font-size: 18px; + font-size: 20px; font-weight: bold; } @@ -354,7 +364,7 @@ void VirtualKeyboard::applyKeyboardStyling() color: white; border: 2px solid #7d3c98; border-radius: 12px; - font-size: 18px; + font-size: 20px; font-weight: bold; } @@ -448,6 +458,32 @@ void VirtualKeyboard::hideEvent(QHideEvent* event) m_targetWidget = nullptr; } +void VirtualKeyboard::resizeEvent(QResizeEvent* event) +{ + QWidget::resizeEvent(event); + // S'assurer que le clavier couvre toute la fenêtre parent si visible + if (isVisible() && parentWidget()) { + setGeometry(parentWidget()->rect()); + } +} + +void VirtualKeyboard::paintEvent(QPaintEvent* event) +{ + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing); + + // Dessiner le fond avec transparence + QColor backgroundColor(44, 62, 80, 250); + painter.fillRect(rect(), backgroundColor); + + // Dessiner la bordure + QPen borderPen(QColor(52, 73, 94), 3); + painter.setPen(borderPen); + painter.drawRoundedRect(rect().adjusted(1, 1, -1, -1), 15, 15); + + QWidget::paintEvent(event); +} + // Slot implementations void VirtualKeyboard::onKeyPressed() { diff --git a/src/view/virtualKeyboard.hpp b/src/view/virtualKeyboard.hpp index f723745..05afd6f 100644 --- a/src/view/virtualKeyboard.hpp +++ b/src/view/virtualKeyboard.hpp @@ -11,6 +11,9 @@ #include #include +class QResizeEvent; +class QPaintEvent; + class VirtualKeyboard : public QWidget { Q_OBJECT @@ -34,6 +37,8 @@ public slots: protected: void showEvent(QShowEvent* event) override; void hideEvent(QHideEvent* event) override; + void resizeEvent(QResizeEvent* event) override; + void paintEvent(QPaintEvent* event) override; private: void setupKeyboard();