1、用户按下Tab键(或者Shift键+Tab键)(或者有时是Enter键)。
2、用户点击一个窗口部件。
3、用户按下一个键盘快捷键。
4、用户使用鼠标滚轮。
5、用户移动焦点到一个窗口,并且应用程序必须决定窗口中的哪个窗口部件应该得到焦点。
很明显,错误是 “multiple definition of `typeinfo name for std::exception'”,也就是对类型重复定义了,错误的起因可能是你的头文件的引用冲突了。
经过测试除了要覆盖时间函数之外无需任何其他动作……
所以,请问您那scene是什么?是这个类的实例所在的QGraphicsScene的指针?dc_scene这是个啥?缺少这些代码我真的不知道是什么问题了。
QGraphicsItem 的所有事件都是由QGraphicsScene获得的,所以一定要确保QGraphicsScene或者是其子类的事件分发函数被正确重载或者使用默认的。
最近在Qt项目中发现,程序运行内存越来越大,然后使用_CrtDumpMemoryLeaks进行内存检查,发现很多泄漏提示,但是检查代码没发现问题
于是使用VS2010 创建了一个Qt console程序,代码如下,
#include <QtCore/QCoreApplication>
#include <asserth>
//
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <crtdbgh>
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, FILE, LINE)
#define new DEBUG_CLIENTBLOCK
static void Exit()
{ int i = _CrtDumpMemoryLeaks(); assert( i == 0);
}
#define CheckMemoryLeaks() {atexit(Exit);}
#else
#define DEBUG_CLIENTBLOCK
#define CheckMemoryLeaks() ;
#endif
//
int main(int argc, char argv[])
{ CheckMemoryLeaks(); QCoreApplication a(argc, argv);
return aexec(); }
===========================================================================
输出信息如下:
Detected memory leaks!
Dumping objects ->
{176} normal block at 0×013A57F0, 12 bytes long Data: < L ]L ]> 00 00 00 00 4C CF 1C 5D 4C CF 1C 5D
{175} normal block at 0×013A57A8, 12 bytes long Data: < L ]L ]> 00 00 00 00 4C CF 1C 5D 4C CF 1C 5D
{174} normal block at 0×013A56F8, 112 bytes long Data: < ] V: L ]> 8C CB 1B 5D B0 56 3A 01 00 00 00 00 4C CF 1C 5D
{173} normal block at 0×013A56B0, 8 bytes long Data: < ] V: > 98 CB 1B 5D F8 56 3A 01
{172} normal block at 0×013A5670, 4 bytes long Data: <L ]> 4C CF 1C 5D
{171} normal block at 0×013A5620, 20 bytes long Data: <@ ]@ ]@ ]@ ]> 40 20 1C 5D 40 20 1C 5D 40 20 1C 5D 40 20 1C 5D
{170} normal block at 0×013A55E0, 4 bytes long Data: <@ ]> 40 20 1C 5D
{156} normal block at 0×013A5530, 16 bytes long Data: < > 01 CD CD CD 00 00 00 00 00 00 00 00 00 00 00 00
{155} normal block at 0×013A54F0, 4 bytes long Data: <0U: > 30 55 3A 01
{154} normal block at 0×013A5288, 552 bytes long Data: < R: > 83 00 00 00 83 00 00 00 98 52 3A 01 CD CD CD CD
{151} normal block at 0×013A50D8, 108 bytes long Data: < ] P: L ]> E8 B9 1B 5D 90 50 3A 01 00 00 00 00 4C CF 1C 5D
{150} normal block at 0×013A5090, 8 bytes long Data: < ] P: > A8 B9 1B 5D D8 50 3A 01
{149} normal block at 0×013A5018, 60 bytes long Data: < P: > 02 00 00 00 90 50 3A 01 FC 1B 00 00 00 CD CD CD
{145} normal block at 0×013A4E58, 32 bytes long Data: < > 01 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00
{144} normal block at 0×013A4E08, 20 bytes long Data: < 4)] \5] \5]( 1]> BC 34 29 5D F0 5C 35 5D 90 5C 35 5D 28 82 31 5D
{143} normal block at 0×013A4DC8, 4 bytes long Data: <XN: > 58 4E 3A 01
{142} normal block at 0×013A4D78, 16 bytes long Data: < > 01 CD CD CD 00 00 00 00 00 00 00 00 00 00 00 00
{141} normal block at 0×013A4D38, 4 bytes long Data: <xM: > 78 4D 3A 01
Object dump complete
这个需要使用双缓冲,OnDraw的时候将图像绘制在上,再绘制一个以鼠标坐标为圆心的圆,再将这个覆盖到DC上。
在OnMouseMove里将鼠标位置更新到OnDraw里的鼠标位置,然后Paint一下。
现在还有人在学MFC。
为啥不用Qt呢——
以上就是关于qt下的qwidget框口怎么设置才能不吃焦点全部的内容,包括:qt下的qwidget框口怎么设置才能不吃焦点、qt使用make使报的错误,使用的例子是书上带的,实在是不明白,请哪位帮下忙,谢谢、100分求助,Qt继承自QGraphicsItem的控件响应不了mousePressEvent事件怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)