摘要:一:信号槽是什么? Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用 二:Qt支持三种类型的信号-槽连接:1,...
阅读全文
摘要:1、模板是一个公式或是蓝图,本身不是类或是函数,需进行实例化的过程。这个过程是在编译期完成的,编译器根据传递的实参,推断出形参的类型,从而实例化相应的函数 2、 后续补充….
阅读全文
摘要:普通函数 int f( int a, int b ){return a + b;}boost::bind( f, _1, 9 )( 1 ) 成员函数 struct demo{int f( int a, int b ){return a + b;}};demo a, &ra=a;demo *p = &a;boost::bind( &demo::f, a, _1, 20 )(...
阅读全文
摘要:字面翻译迭代器类型不兼容 今天同事遇到的这个问题算是一个习惯性写法的问题。描述一下代码: struct Track{}; class BaseTrack { … std::vector GetTrackSourceList(); … }; 问题所在: void func(BaseTrack bt) std::vector::iterator it = bt.GetTrackSourceLis...
阅读全文
摘要:线程的中断点 thread::join myThread::join调用这个方法的线程进入wait状态,直到myThread代表的线程完成 thread::try_join_forthread::try_join_until 阻塞等待一定的时间段 condition_variable_any::wait wait(mu) condition_variable_any::wai...
阅读全文
摘要:对比 无论是 Qt 的实现方式还是 Boost 的实现方式,除了必须的定义信号和槽的类之外,都不需要额外的类。 两种实现都解决了类爆炸的问题。下面让我们对照着来看一下我们前面的分析。 两个不同的术语以及各自的动作:信号和槽; 在一个地方(信号)可以连接零个或者多个回调函数(槽)同时也是多对多的,一对多,多对多; 焦点在于连接本身,而不是提供者或者消费者; 不需要手工为了一个连接创建新的...
阅读全文
摘要:1、使用QObject子类的movetothread方法 代替 QThread子类的run 实现多线程。使用原始QThread对象的start方法启动线程==>连接原始QThread对象的started信号到QObject子类的槽(线程部分)。 2、有parent的object是不能moveToThread被移动到其他线程中的,所以还需要把子类对象给setParent(NULL)一下再moveTo...
阅读全文
摘要:最近用Qt软件界面,需要用到mouseMoveEvent,研究了下,发现些问题,分享一下。 在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent,但是MouseMoveEvent为了不太耗资源在默认状态下是要鼠标按下才能捕捉到。要想鼠标不按下时的移动也能捕捉到,需要setMouseTracking(true)。 bool mouseTracking 这个属性保存的是窗口部件跟踪鼠标是否...
阅读全文
摘要:QMouseEvent中两类坐标系统,一类是窗口坐标,一类是显示器坐标。 QPoint QMouseEvent::pos() 返回相对这个widget(重载了QMouseEvent的widget)的位置 QPoint QMouseEvent::globalPos() 窗口坐标,这个是返回鼠标的全局坐标 QPoint QCursor::pos() [static] 返回相对显示器...
阅读全文
摘要:坐标系统,也就是QPaintDevice上面的坐标。 将QPainter的逻辑坐标与QPaintDevice的物理坐标进行映射的工作,是由QPainter的变换矩阵(transformation matrix)、视口(viewport)和窗口(window)完成的。 建议是使用QRectF。如果你不得不使用QRect,那么可以利用 x() + width() 和 y() + height() 来替...
阅读全文
摘要:窗口坐标为逻辑坐标,是基于视口坐标系的。 视口坐标为物理坐标,是基于绘图设备坐标系的 窗口坐标始终以视口坐标为最终目标进行映射: QPainter::setWindow 修改了窗口位置和大小(左上角重新定义了一个数值和长度) QPainter::setViewport 修改了视口位置和像素个数(左上角移动到相应位置和像素个数) -------------------------------...
阅读全文
摘要:1、Item(图元)坐标:属于局部坐标,通常以图元中心为原点(中心对称),非中心对称类,比如dialog类,一般以左上角为原点,正方向x朝右,y朝下。 2、setPos的坐标是父类坐标系的坐标,一般对于item位于scene中的应用场景。 3、scene(场景)坐标:属于逻辑坐标 logical coordinates(与QPainter相同),以场景中心为原点,正方向x朝右,y朝下。 4、图元原...
阅读全文