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 ;
}
}