在学习和使用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
网友评论