Qt5踩坑记录

2019-04-28  本文已影响0人  JohnAo_

在学习和使用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
上一篇下一篇

猜你喜欢

热点阅读