Qt5踩坑记录

在学习和使用Qt5的过程中遇到过不少“坑人”之处,在此略作记录。

QGraphicsView无法检测鼠标移动

最初我在主窗口加入了如下代码

QGraphicsView gview;
gview.setMouseTracking(true);
gview.installEventFilter(this);

但令人失望的是,当鼠标在gview内部移动时eventFilter中并没有获取到QEvent::MouseMove类型的事件,反而当鼠标在gview边界上移动时会接收到鼠标移动事件。实际上Qt中包含QGraphicsView在内的很多控件有一个viewport表示它的内部,所以应该将将上述代码修改为

QGraphicsView gview;
auto gviewport=gview.viewport();
gviewport->setMouseTracking(true);
gviewport->installEventFilter(this);

界面中文显示出现乱码

如果你使用的是msvc,那么如果修改代码源文件的编码为utf-8没有效果的话,还需要在代码文件头加入如下编译指令,指定使用的字符集

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。