现在的位置: 首页 > 综合 > 正文

Qt 处理键盘按键事件:只能输入字母 keyPressEvent

2018年03月21日 ⁄ 综合 ⁄ 共 1248字 ⁄ 字号 评论关闭

键盘事件:处理键盘输入,只输入字母

 

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 ;

}

}

抱歉!评论已关闭.