Qt中获取常用的事件以及简单2D绘图
2012-01-09 13:33
471 查看
因为项目的需要以及主管的要求,准备将工程移植到Qt中,这样就可以比较容易的实现跨平台了。因为之前工程是在windows下开发的,第一个平台又是mobile所以除了底层框架之外其他的都是使用的windows的API以及编程模式,现在要移植到Qt中,第一个要面临的问题就是如何将windows的消息机制很好的转换为Qt中的处理机制。windows中是消息,Qt中是事件和信号、槽,其实原理都是一样的。
1、常用事件
因为所有和界面相关的类都是继承自QWidget类,所以QWidget类有的时间和方法,在每个界面相关的类中都有,最常用的一些事件如下:
如果我们想要使用这些事件,只需要在自己的类中继承并重写这些事件处理函数就行了。
另外有一点在使用
这个事件还是比较有用的,因为在使用输入法特别是中文的时候,要获取输入的内容就必须使用这个事件。
普通的拉丁字母获取键值就很简单了,重写
2、简单2D绘图
这里要使用到QPainter类以及它的一些方法,并重写
好了,今天是回归C/C++和Qt之后写的第一篇博客,内容比较简单,但是很基础,写的不好,希望大家见谅。
今天就到此为止了!!
1、常用事件
因为所有和界面相关的类都是继承自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 *);
如果我们想要使用这些事件,只需要在自己的类中继承并重写这些事件处理函数就行了。
另外有一点在使用
virtual void inputMethodEvent(QInputMethodEvent *);这个事件的时候我们需要注意一下,因为在QWidget类中默认是忽略这个事件的,所以如果想要在使用输入法的时候截获这个事件就需要在自己的类构造函数中对自己的窗体类进行属性设置,具体代码如下:
this->setAttribute(Qt::WA_InputMethodEnabled); this->setAttribute(Qt::WA_KeyCompression); this->setFocusPolicy(Qt::WheelFocus);
这个事件还是比较有用的,因为在使用输入法特别是中文的时候,要获取输入的内容就必须使用这个事件。
普通的拉丁字母获取键值就很简单了,重写
virtual void keyPressEvent(QKeyEvent *);相关的事件就行了。
2、简单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); //绘制矩形
好了,今天是回归C/C++和Qt之后写的第一篇博客,内容比较简单,但是很基础,写的不好,希望大家见谅。
今天就到此为止了!!
相关文章推荐
- qt模态对话框 以及exec()事件循环简单实现
- 关于Qt的事件循环以及QEventLoop的简单使用(QEventLoop::quit()能够终止事件循环,事件循环是可以嵌套的)
- 十一、Qt 2D绘图(一)绘制简单图形
- 关于Qt的事件循环以及QEventLoop的简单使用
- 关于Qt的事件循环以及QEventLoop的简单使用
- JS及jQuery获取各种宽度、高度的简单介绍以及判断滚动条滚动到底部事件
- Qt常用控件+事件+基础绘图(四)
- 2D简单绘图---QT
- 关于Qt的事件循环以及QEventLoop的简单使用
- js中获取键盘事件以及常用键码
- [Qt教程] 第11篇 2D绘图(一)绘制简单图形
- Qt 2D绘图(一)绘制简单图形
- 关于Qt的事件循环以及QEventLoop的简单使用
- Zookeeper命令行操作(常用命令;客户端连接;查看znode路径;创建节点;获取znode数据,查看节点内容,设置节点内容,删除节点;监听znode事件;telnet连接zookeeper)
- 在FormView控件中嵌套数据绑定控件的问题,以及从一个对象中反射获取属性值的简单办法
- QT--2D绘图
- Shader学习记录点滴03——流水效果以及简单2D动画
- Qt获取键盘按键事件(Windows API)----StateReader系列
- java字符操作获取汉字的拼音以及其他常用工具
- Qt 2D绘图(六)坐标系统