main.cpp #include <QtGui> #include "brozedialog.h" #include "bronzestyle.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); QApplication::setStyle(new BronzeStyle); BronzeDialog dialog; dialog.layout()->setSpa…
<QThread源码浅析> 子类化QThread来实现多线程, QThread只有run函数是在新线程里的,其他所有函数都在QThread生成的线程里.正确启动线程的方法是调用QThread::start()来启动,如果直接调用run成员函数,这个时候并不会有新的线程产生( 原因: 可以查看往期<QThread源码浅析>文章,了解下run函数是怎么被调用的). 一.步骤 子类化 QThread: 重写run,将耗时的事件放到此函数执行: 根据是否需要事件循环,若需要就在run函数中…
往期链接: <QThread源码浅析> <子类化QThread实现多线程> 从往期<QThread源码浅析>可知,在Qt4.4之前,run 是纯虚函数,必须子类化QThread来实现run函数.而从Qt4.4开始,QThread不再支持抽象类,run 默认调用 QThread::exec() ,不需要子类化QThread,只需要子类化一个QObject,通过QObject::moveToThread将QObject派生类移动到线程中即可.这是官方推荐的方法,而且使用灵活…
1.问题背景 在某个类中,用到了一个组合的widget,有按钮进度条等,类似于视频播放器按钮控制区和精度条(参考了很多feiyangqingyun的文章,感谢),调试正常后整理代码,为了提高代码可读性,把widget提到一个单独的类中,重命名为FlowPanel,子类化后发现之前设置的widget背景色无法生效. 2.在父类中直接创建widget控制面板 步骤1: 在父控件类中直接创建widiget: flowPanel2=newQWidget(this); initFlowpanel(); 步…
一.关于起因 之前发过一篇博文,是关于VB6中跟踪鼠标移出事件的示例(http://www.cnblogs.com/alexywt/p/5891827.html) 随着业务状况的不断发展,提出了更多的挑战和问题. 其一:子类化在VB6的IDE调试阶段会出现崩溃情况,需要实现子类化的无崩溃调试; 其一:我的窗体或自定义控件中可能有很多控件需要跟踪鼠标移出事件;甚至可能会通过代码来动态添加控件,要监听移出事件,通常是用WithEvents,但VB6的该关键字不支持数组对象的事件跟踪.也就是说要找到一…
子类化,通俗来讲就是用自己的窗口处理函数来处理特定消息,并将自己其他消息还给标准(默认)窗口处理函数.在SDK中,通过SetWindowLong来指定一个自定义窗口处理函数:SetWindowLong(hwnd, GWL_WNDPROC, (LONG)UserWndProc);.可是到了MFC中,大部分基础的东西都被封装起来了,那么,这是该怎么实现子类化呢?       先来看一个例子:       要求:定义一个Edit控件,让它能够对输入进行特定的处理输入进行处理-----只能输入英文字母,…
昨天, 群里面有一个人问起: 要怎么让"文件打开对话框"居中显示, 有人说子类. 而我告诉他的方法是用钩子函数OFNHookProc, 不知道这是不是所谓的子类?相信看了我今天这篇文章以后, 要解决居中显示的问题就是小菜一碟啦~ 这个东西也并不是我今天才用, 很久以前做的串口调试助手(Com Monitor)上面也用到了这个功能. 下面来看一张被挂钩了的GetOpenFileName的效果(来自QQ影音): 可以看到, "打开"对话框的右上角被QQ影音添加了一个按钮…
1. 如果想实现与某个内置类型具有类似行为的类时,最好的方法就是将这个内置类型子类化. 2. 内置类型子类化,其实就是自定义一个新类,使其继承有类似行为的内置类,通过重定义这个新类实现指定的功能. class newDictError(ValueError): '''如果向newDict添加重复值,则引发此异常''' class newDict(dict): '''不接受重复值的字典''' def __setitem__(self, key, value): if value in self.v…
[原创文章,转发请保留版权信息] 作者:mezstd 文章地址:http://www.cnblogs.com/imez/p/3299728.html 效果图: 请原谅笔者无耻地称之为史无前例,至少在笔者发布该文章之前没有看到关于VB6子类化标准按钮并实现透明的文章. 首先,要使按钮能被支持透明,必须调用SetWindowLong给按钮添加WS_EX_TRANSPARENT窗口风格,当然,要绘制透明按钮,必须使用支持alpha通道的Gdi+ 来实现.详细的请看代码,由于笔者平常没有添加注释的习惯,…
在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWindowLong,CallWindowProc,FindWindowEx 超类化:GetClassInfoEx,RegisterClassEx,UnRegisterClass 以上函数在代码中的使用见<C++ 中超类化和子类化> VC中基于SDK编程的窗口子类化 VC中基于SDK编程的窗口子类化的…