1. 程式人生 > >Qt 處理鍵盤按鍵事件:只能輸入字母 keyPressEvent

Qt 處理鍵盤按鍵事件:只能輸入字母 keyPressEvent

鍵盤事件:處理鍵盤輸入,只輸入字母

main.cpp

#include<QApplication>

#include “DemoWidget.h”

int  main(int  args , char ** argv)

{

      QApplication  app(args,argv);

      DemoWidget w;

      w.resize(400,400);

      w.setVisible(true);

      return   app.exec();

}

main.pro

TEMPLATE=app

SOURCES=main.cpp DemoWidget.cpp DemoEdit.cpp

HEADERS=DemoWidget.h DemoEdit.h

CONFIG=release qt

QT=core gui

TARGET=main

demoWidget.h

#ifndef DEMO3_WIDGET_H

#define DEMO3_WIDGET_H

#include<QWidget>

#include “DemoEdit.h”

class DemoWidget : public QWidget

{

 public:

      DemoWidget(QWidget * p=NULL);

 private:

       DemoEdit *edt;

};

#endif

demoWidget.cpp

#include “DemoWidget.h”

DemoWidget::DemoWidget(QWidget*p):QWidget(p)

{

     edt= new DemoEdit(this);

    edt->resize(200,30);

    edt->move(10,10);

}

demoEdit.h

#ifndef DEMO3_EDIT_H

#define DEMO3_EDIT_H

#include<QLineEdit>

#include<QKeyEvent>

class DemoEdit : public QLineEdit

{

 public:

    DemoEdit(QWidget *p=NULL);

 protected:

      virtual void keyPressEvent(QKeyEvent *e);

};

#endif

demoEdit.cpp

#include “demoEdit.h”

DemoEdit::DemoEdit(QWidget * p):QLineEdit(p)

{

}

void DemoEdit::KeyPressEvent(QKeyEvent *e)

{

int  key=e->key();

if(key>=65&& key<=90 || key==Qt::Key_Backspace )

{

  //  QLineEdit::keyPressEvent(e);    //呼叫父類鍵盤事件處理函式

      this->setText(this->text()+ “*”);  //密碼設定,輸入顯示*

}

else

{

     return ;

}

}