qt下的qwidget框口怎么设置才能不吃焦点

qt下的qwidget框口怎么设置才能不吃焦点,第1张

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事件怎么办等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9353704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存