QWidget类中默认是忽略inputMethodEvent事件(要获取输入的内容就必须使用这个事件)

111 篇文章 9 订阅
24 篇文章 0 订阅

常用事件

         因为所有和界面相关的类都是继承自QWidget类,所以QWidget类有的时间和方法,在每个界面相关的类中都有,最常用的一些事件如下:

//   bool event(QEvent *);  
//   virtual void mousePressEvent(QMouseEvent *);  
//   virtual void mouseReleaseEvent(QMouseEvent *);  
//   virtual void mouseDoubleClickEvent(QMouseEvent *);  
//   virtual void mouseMoveEvent(QMouseEvent *);  
//   virtual void wheelEvent(QWheelEvent *);  
//   virtual void keyPressEvent(QKeyEvent *);  
//   virtual void keyReleaseEvent(QKeyEvent *);  
//   virtual void focusInEvent(QFocusEvent *);  
//   virtual void focusOutEvent(QFocusEvent *);  
//   virtual void enterEvent(QEvent *);  
//   virtual void leaveEvent(QEvent *);  
//   virtual void paintEvent(QPaintEvent *);  
//   virtual void moveEvent(QMoveEvent *);  
//   virtual void resizeEvent(QResizeEvent *);  
//   virtual void closeEvent(QCloseEvent *);  
//   virtual void contextMenuEvent(QContextMenuEvent *);  
//   virtual void tabletEvent(QTabletEvent *);  
//   virtual void actionEvent(QActionEvent *);  
//   virtual void dragEnterEvent(QDragEnterEvent *);  
//   virtual void dragMoveEvent(QDragMoveEvent *);  
//   virtual void dragLeaveEvent(QDragLeaveEvent *);  
//   virtual void dropEvent(QDropEvent *);  
//   virtual void showEvent(QShowEvent *);  
//   virtual void hideEvent(QHideEvent *);  
//#if defined(Q_WS_MAC)  
//   virtual bool macEvent(EventHandlerCallRef, EventRef);  
//#endif  
//#if defined(Q_WS_WIN)  
//   virtual bool winEvent(MSG *message, long *result);  
//#endif  
//#if defined(Q_WS_X11)  
//   virtual bool x11Event(XEvent *);  
//#endif  
//#if defined(Q_WS_QWS)  
//   virtual bool qwsEvent(QWSEvent *);  
//#endif  
  
//    // Misc. protected functions  
//   virtual void changeEvent(QEvent *);  
  
//   virtual void inputMethodEvent(QInputMethodEvent *);  
  
   virtual void mouseMoveEvent(QMouseEvent *);  
   virtual void mousePressEvent(QMouseEvent *);  
   virtual void keyPressEvent(QKeyEvent *);  
   virtual void paintEvent(QPaintEvent *);  
   virtual void inputMethodEvent(QInputMethodEvent *);</span>  
 

     如果我们想要使用这些事件,只需要在自己的类中继承并重写这些事件处理函数就行了。另外有一点在使用

virtual void inputMethodEvent(QInputMethodEvent *);

      这个事件的时候我们需要注意一下,因为在QWidget类中默认是忽略这个事件的,所以如果想要在使用输入法的时候截获这个事件就需要在自己的类构造函数中对自己的窗体类进行属性设置,具体代码如下:

this->setAttribute(Qt::WA_InputMethodEnabled);  
this->setAttribute(Qt::WA_KeyCompression);  
this->setFocusPolicy(Qt::WheelFocus);

     这个事件还是比较有用的,因为在使用输入法特别是中文的时候,要获取输入的内容就必须使用这个事件。普通的拉丁字母获取键值就很简单了,重写

virtual void keyPressEvent(QKeyEvent *);

    相关的事件就行了。

 

简单2D绘图

      这里要使用到QPainter类以及它的一些方法,并重写

virtual void paintEvent(QPaintEvent *);

      事件就行了,简单的使用代码如下:

    QPainter painter(this);  
    QPen pen; //画笔  
    QBrush brush;//画刷  
    painter.drawLine(0,0,100,200);  
  
    pen.setColor(QColor(255,0,0));  
    brush.setColor(QColor(0,255,0,255));  
    brush.setStyle(Qt::SolidPattern);  
  
    painter.setPen(pen); //添加画笔  
    painter.setBrush(brush); //添加画刷  
    painter.drawRect(50,70,160,200);

参考:

https://www.yuque.com/docs/share/f33de0c4-2c28-45c2-875b-17f4a3ee91c5

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值