读书人

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

发布时间: 2013-09-27 14:23:42 作者: rapoo

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 ;

}

}

读书人网 >编程

热点推荐