plus grand bouton

This commit is contained in:
florian 2025-08-20 10:06:19 +02:00
parent 28054f494a
commit 5c6b908736
3 changed files with 118 additions and 70 deletions

View File

@ -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()

View File

@ -3,7 +3,11 @@
#include <QFocusEvent>
#include <QShowEvent>
#include <QHideEvent>
#include <QResizeEvent>
#include <QScreen>
#include <QPalette>
#include <QPainter>
#include <QPaintEvent>
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()
{

View File

@ -11,6 +11,9 @@
#include <QApplication>
#include <QDesktopWidget>
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();