一起看代码来玩玩QT之06Event
来源:互联网 发布:皮试液的配制简便算法 编辑:程序博客网 时间:2024/05/16 05:44
.h
#ifndef MYWIDGET_H#define MYWIDGET_H#include <QWidget>#include <QPushButton>#include <QLineEdit>class MyWidget : public QWidget{ Q_OBJECTpublic: explicit MyWidget(QWidget *parent = 0); /* widget's event handler (all event) */ bool event(QEvent *); void mousePressEvent(QMouseEvent *); void mouseReleaseEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *); /* 不要用 */ // void mouseDoubleClickEvent(QMouseEvent *); void keyPressEvent(QKeyEvent *); void keyReleaseEvent(QKeyEvent *); void closeEvent(QCloseEvent *); // void showEvent(QShowEvent *); // void hideEvent(QHideEvent *); void paintEvent(QPaintEvent *); QPushButton* button; QLineEdit* edit;signals:public slots: void slotButtonClicked();};#endif // MYWIDGET_H.cpp
#include "MyWidget.h"#include <QApplication>#include <QEvent>#include <QDebug>#include <QMouseEvent>#include <QKeyEvent>#include <QVBoxLayout>#include <QPainter>MyWidget::MyWidget(QWidget *parent) : QWidget(parent){// QVBoxLayout* lay = new QVBoxLayout(this); QVBoxLayout*lay =new QVBoxLayout(); // this->setLayout(lay);#if 0 QPushButton* button2; lay->addWidget(button = new QPushButton("OK", this)); lay->addWidget(button2 = new QPushButton("Button2")); button->setDefault(true); // 鼠标不需要按下,mouseMove就能得到调用 this->setMouseTracking(true); connect(button2, SIGNAL(clicked()), this, SLOT(slotButtonClicked())); connect(button, SIGNAL(clicked()), this, SLOT(slotButtonClicked()));#endif// lay->addWidget(edit = new QLineEdit());// connect(edit, SIGNAL(returnPressed()), this, SLOT(slotButtonClicked()));}void MyWidget::slotButtonClicked(){ QLineEdit* button = (QLineEdit*)sender(); qDebug() << button->text();}/* QApplication先得到->具体应该处理的窗口::event()->event()根据消息类型来调用具体的虚函数 *//* 1)可以重载具体的虚函数,来实现对消息的响应 2)可以重载event函数,用来处理或者截取消息 *//* 截取消息 */bool MyWidget::event(QEvent *ev){ // 鼠标消息被截断 // if(ev->type() == QEvent::MouseButtonPress) // return true; ev->accept(); return QWidget::event(ev);}void MyWidget::closeEvent(QCloseEvent *){ qDebug() << "closeEvent";}void MyWidget::paintEvent(QPaintEvent *){ QPainter p(this); p.drawLine(QPoint(0, 0), QPoint(100, 100));}void MyWidget::mousePressEvent(QMouseEvent *ev){#if 0 QPoint pt = ev->pos(); qDebug() << pt; if(ev->button() == Qt::LeftButton) { } if(ev->modifiers() == Qt::ShiftModifier) { qDebug() << "shift press"; }#endif if(ev->button() == Qt::LeftButton) { if(ev->modifiers() == Qt::ControlModifier) { // handle with Control; return; } // handle2 without control; } else { }}void MyWidget::mouseReleaseEvent(QMouseEvent *){}void MyWidget::mouseMoveEvent(QMouseEvent *){ static int i=0; qDebug() << "mouse move"<< i++;}void MyWidget::keyPressEvent(QKeyEvent *ev){ ev->modifiers(); int key = ev->key(); qDebug() << key; char a = key; qDebug() << (char)a;}void MyWidget::keyReleaseEvent(QKeyEvent *){}int main(int argc, char* argv[]){ QApplication app(argc, argv); MyWidget w; w.show(); return app.exec();}
0 0
- 一起看代码来玩玩QT之06Event
- 一起看代码来玩玩QT之01Hello world
- 一起看代码来玩玩QT之02LineEdit
- 一起看代码来玩玩QT之03coordinate
- 一起看代码来玩玩QT之04 Layout
- 一起看代码来玩玩QT之05 Controls
- 一起看代码来玩玩QT之07 Painter
- 一起看代码来玩玩QT之10 Graphics
- 一起看代码来玩玩QT之11 Dialog
- 一起看代码来玩玩QT之17 json
- 一起看代码来玩玩QT之19 Process(进程)
- 一起看代码来玩玩QT之21 HttpClient
- 一起看代码来玩玩QT之23 audioRecord
- 一起看代码来玩玩QT之24 AudioPlayer
- 一起看代码来玩玩QT之06EventFilter (事件过滤)
- 一起看代码来玩玩QT之08 Draw(first projiect 画板)
- 一起看代码来玩玩QT之09 Signal and SLOT ( 信号和槽)
- 一起看代码来玩玩QT之12 MainWindow(menubar menu ……)
- css中id选择器和class选择器的区别?
- tomcat 配置
- 【iOS】右滑返回上一级界面手势
- 支付宝支付完成后用户关闭支付页面,异步回调失败
- POJ 3159 - Candies
- 一起看代码来玩玩QT之06Event
- 第三届_微生物繁殖
- 安卓源码下编译
- VLC编译错误
- Tomacat启动报错如下: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
- 可滑动的 Table View Cell
- 心得2
- 如何配置Nginx+Fastcgi实现控制硬件
- 36. Valid Sudoku