2016-04-11 1 views
4

Je ne sais pas comment implémenter la gestion de la clé d'échappement pour quitter le programme. Je ne sais pas non plus où le mettre dans mon code, parce que si je le mets dans une méthode, comment peut-il quitter n'importe où?Gestion de la touche d'échappement pour quitter un programme

Ceci est mon code actuel:

#include <iostream> 
    #include <QApplication> 
    #include <QPushButton> 
    #include <QLineEdit> 
    #include <QFormLayout> 
    #include <QDebug> 
    #include "LibQt.hpp" 

    LibQt::LibQt() : QWidget() 
    { 
     this->size_x = 500; 
     this->size_y = 500; 
     QWidget::setWindowTitle("The Plazza"); 
     setFixedSize(this->size_x, this->size_y); 
     manageOrder(); 
    } 

    LibQt::~LibQt() 
    { 
    } 
void LibQt::manageOrder() 
{ 
    this->testline = new QLineEdit; 
    this->m_button = new QPushButton("Send Order"); 
    QFormLayout *converLayout = new QFormLayout; 

    this->m_button->setCursor(Qt::PointingHandCursor); 
    this->m_button->setFont(QFont("Comic Sans MS", 14)); 
    converLayout->addRow("Order : ", this->testline); 
    converLayout->addWidget(this->m_button); 
    this->setLayout(converLayout); 
    QObject::connect(m_button, SIGNAL(clicked()), this, SLOT(ClearAndGetTxt())); 
} 

std::string  LibQt::ClearAndGetTxt() 
{ 
    QString txt = this->testline->text(); 

    this->usertxt = txt.toStdString(); 
    std::cout << this->usertxt << std::endl; 
    this->testline->clear(); 
    return (this->usertxt); 
} 

std::string  LibQt::getUsertxt() 
{ 
    return (this->usertxt); 
} 

et voici mon .hpp

#ifndef _LIBQT_HPP_ 
#define _LIBQT_HPP_ 

#include <QApplication> 
#include <QWidget> 
#include <QPushButton> 
#include <QLineEdit> 
#include <QKeyEvent> 
#include <QCheckBox> 
#include <QPlainTextEdit> 

class LibQt : public QWidget 
{ 
    Q_OBJECT 

public: 
    LibQt(); 
    ~LibQt(); 
    void manageOrder(); 
    std::string getUsertxt(); 
public slots: 
    std::string ClearAndGetTxt(); 
protected: 
    int size_x; 
    int size_y; 
    QPushButton *m_button; 
    QLineEdit *testline; 
    std::string usertxt; 
}; 

#endif /* _LIBQT_HPP_ */ 

Répondre

5

Vous devez remplacer la méthode void QWidget::keyPressEvent(QKeyEvent *event). Il ressemblera à ceci pour vous:

void LibQt::keyPressEvent(QKeyEvent* event) 
{ 
    if(event->key() == Qt::Key_Escape) 
    { 
     QCoreApplication::quit(); 
    } 
    else 
     QWidget::keyPressEvent(event) 
} 
+0

Cela fonctionne parfaitement, merci! – Michael003