#include <QApplication>
#include <QWidget>
#include <QKeyEvent>
#include <QMouseEvent>
#include <QPushButton>
#include <iostream>
using namespace std;
//类声明
class Widget : public QWidget{
public:
void mousePressEvent(QMouseEvent *e) {
cout << __FUNCTION__ << " mouseDown" << endl;
}
void mouseReleaseEvent(QMouseEvent *e){
cout << __FUNCTION__ << " mouseRelease" << endl;
}
void keyPressEvent(QKeyEvent *e){
cout << __FUNCTION__ << " keyDown" <<endl;
}
void keyReleaseEvent(QKeyEvent *e){
cout << __FUNCTION__ << " keyDown" <<endl;
}
};
class Button : public QPushButton{
public:
void mousePressEvent(QMouseEvent *e) {
cout << __FUNCTION__ << " mouseDown" << endl;
e->accept();
}
void mouseReleaseEvent(QMouseEvent *e){
cout << __FUNCTION__ << " mouseRelease" << endl;
QWidget::mouseReleaseEvent(e);
}
void keyPressEvent(QKeyEvent *e){
cout << __FUNCTION__ << " keyDown" <<endl;
e->ignore(); //调用 accept(),则事件不会传递给父对象,若调用 ignore()则事件会向父对象传递。
}
void keyReleaseEvent(QKeyEvent *e){
cout << __FUNCTION__ << " keyRelease" <<endl;
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
Button *b = new Button();
b->setParent(&w);
b->setText("testButton");
b->move(22, 22);
w.resize(333, 222);
w.show();
return a.exec();
}
【Qt学习】事件 accept() ignore()
最新推荐文章于 2024-02-05 10:55:45 发布