Tag: C/C++
All the articles with the tag "C/C++".
C++ String正确实现以及关键点
Published: at 04:17 PM正确实现String可以考察C++的一些基本功,稍不注意就会出错,下面来列举一下关键点: 1. 构造函数,拷贝构造,赋值操作符是必须的; 2. 成员初始化列表执行顺序; 3. cstr()不要返回空指针; 4. 实现swap函数; 5. 分配内存的时候要用外面传进来的size; 6. 赋值操作符的实...
bug修复,解决延迟搜索的问题
Published: at 10:09 AM在输入框进行搜索的时候,通常我们每输入一个文字都要进行一次搜索,这样能得到实时的搜索结果。如果搜索速度很快的话当然是没问题的。 如果搜索的速度慢,当用户快速输入的时候就会很卡了。 其实在用户快速输入的时候对中间搜索的结果并不感兴趣,最后的结果才是我们想要...
bug修复,内存释放问题
Published: at 09:50 AM碰到了一个内存释放的问题,在进行某个复杂的操作时内存释放后否则会造成崩溃。经过多方面调查发现此时根据就不能释放内存(历史原因),否则会造成不可预知的问题。所以我打算把要删除的指针暂时保存起来,并不立马delete,等到10秒钟还没有操作的时候(稍微空闲)再把保存的指针...
Qt自定义Tooltip
Published: at 07:58 AM系统自带的tooltip太简单了,自定义tooltip就灵活多了,可以定义各种各样的控件样式。 从QDialog继承 class Tooltip public QDialog 设置无边框属性 setWindowFlags(QtFramelessWindowHint QtDialog); 在鼠标点击其他地方的时候自动关闭 ...
QTableView多选
Published: at 05:25 AM首先要了解它的setSelectionBehavior和setSelectionMode这两个接口,接下来再来考虑选中的问题。查看官方文档,setSelectionBehavior用来设置选中的是单元格,行还是列,setSelectionMode用来设置用户点击后的界面响应:单选,多选,扩展选择(Ctrl+Shift键),相邻,不选中。这里仅介...
Qt回调到UI线程
Published: at 01:43 AM桌面客户端程序主线程就是UI线程,我们经常要将网络中获取到的数据展示到界面上,通常有同步和异步两种方式,同步方式会阻塞UI,所以这种方式可以忽略了(特殊情况下可以使用)。大多数异步方式请求后是在子线程中返回数据的,而在这里我们是不能直接操作UI的。 下面介绍两种方...
API设计原则(下)
Published: at 02:08 PMAPI的语义和文档 当传值为-1的参数给函数,函数会是什么行为?有很多类似的问题…… 是警告、致命错误还是其它? API需要的是质量保证。API第一个版本一定是不对的;必须对其进行测试。 以阅读使用API的代码的方式编写用例,且验证这样代码是可读的。 还有其他的验证方法...
API设计原则(中)
Published: at 02:08 PMC++相关 值 vs. 对象 1. 指针 vs. 引用 指针(pointer)还是引用(reference)哪个是最好的输出参数(out-parameters)? void getHsv(int h, int s, int v) const; void getHsv(int &h, int &s, int &v) const; 大多数C++书籍推荐尽可能使用引用,基于一个普遍的观...
API设计原则(上)
Published: at 02:07 PM译序 Qt的设计水准在业界很有口碑,一致、易于掌握和强大的API是Qt最著名的优点之一。此文既是Qt官网上的API设计指导准则,也是Qt在API设计上的实践总结。虽然Qt用的是C++,但其中设计原则和思考是具有普适性的(如果你对C++还不精通,可以忽略与C++强相关或是过于细节的部分,...
visual stdio不同目录下的文件重名,类重名问题解决方法
Published: at 02:37 PM以下测试是在vs2008和vs2012中进行的 先建一个空的Test控制台应用程序,目录结构如下: 目录(http//img.blog.csdn.net/20131207182756984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHVqaWF3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gr...