Qt之信号槽机制 信号槽机制所谓信号槽,实际上跟观察者模式(公众号的发布-订阅)比较类似。信号槽的实现是借助“元对象编译器”Moc。这个工具被集成到Qt的编译工具链qmake中,再开始编译QT时,会先去执行moc将信号、槽及宏定义进行编译生成一个moc_xx.cpp文件,之后就是C++常规的编译链接了。简单的理解为C++要对QT的语言进行编译,就要利用元对象编译器将其翻译为C++认识的语言。moc的本质是反射,java中有,C++是没有的,简单的来说就是在程序运行时,获取对象的构造函数、成员函数以及成员变量。并
Qt之事件机制 事件机制(也称消息机制)事件循环,也成为消息循环;QT中事件循环涉及到了类的话是QEVENTLOOP流程:启动事件循环>获取事件>分发事件>处理时间QApplication>获取事件>eventfilter>event>启动事件循环并阻塞:QApplication::exec()发送事件:sendevent()和postevent()前者发出的事件会立即被执行,也就是同步执行;后者发出的事件会先加入事件队列中,在下一轮事件循环时才处理,也就是异步执行
Qt之预编译宏用法 Qt之预编译宏用法传统包含头文件的方式1)直接包含头文件形式;2)类前申明方式;预编译宏的形式主要看下预编译宏方式的用法:例如,//test.hQT_BEGIN_NAMESPACEclass QPushButton;class QLineEdit;QT_END_NAMESPACE;//chartsQT_CHARTS_START_NAMESPACEclass QChartView;class QChart;QT_CHARTS_END_NAMESPACE//test.cpp
C++面试题之问题归纳 基础知识点1.C与C++有什么区别,C++有哪些特征?说说多态是怎么实现的(C++内存模型)?2.构造函数可以是虚函数吗,为什么?3.析构函数可以是虚函数吗,什么时候必须为虚函数,为什么?4.子类析构要调用父类的析构函数吗?5.C++空类默认有哪些成员函数(提示6种)?6.什么情况下需要调用拷贝构造函数?7.类的静态成员与非静态成员有哪些区别?8.说说纯虚函数,虚函数,多态(虚指针,虚函数表),this指针9.说说堆和栈(内存布局,内核空间,用户空间)10.重载,重写(覆盖)与隐藏的区别
C++面试题之设计模式及设计原则 六大设计原则1)单一职责原则类的职责单一,对外提供一个功能,函数也支持;2)里氏替换原则任何抽象类的出现都可以用他的实现类进行替换。3)依赖倒置原则依赖于抽象,不要依赖具体实现,也就是针对接口编程4)接口隔离原则一个接口对外应该只提供一种对外功能,不应该把所有操作都封装到一个接口里。5)开闭原则对扩展开放,对修改关闭;//代码实现class AbstractCaculator{public: virtual int getResult() = 0; virtual void s
C++编程题之新特性 1. 语言可用性的强化1)nullptr:本质还是0,但相对于NULL提供了类型;2)范围for;3)auto自动推导类型;4)迭代器遍历;5)继承构造与委托构造;6)override:修饰虚函数,编译器将检查基类的函数是否存在这样的虚函数;7)final:修饰类,表示该类不可继承;修饰虚函数,表示该函数不能被重载;8)四种类型转化static_cast:1)用于基础类型之间的转换,与C语言强制类型转换一样,没有安全类型检查;2)用于上行转换(子类转父类);const_cast:用
C++面试题之字符串改错 1. 字符串越界问题void test1(){ char string[10]; char* str1 = "0123456789"; strcpy(string, str1);}错误分析:[C代码可编译过]1)string不能作为变量使用,是C++中的string类库;2)str1是一个指向字符的指针,字符串所占长度为11,strcpy函数是将str1拷贝给string,但string大小只有10,str1大小为11,导致数组越界。void test2(){ char str[
C++面试题之排序算法编程 //冒泡排序#include<iostream>using namespace std;void print(int arr[], int n){ for(int j= 0; j<n; j++) { cout<<arr[j] <<" "; } cout<<endl; } void BubbleSort(int arr[], int n){ for (
C++面试题之字符串编程 题目描述: 计算字符串最后一个单词的长度,单词以空格隔开。输入描述: 一行字符串,非空,长度小于5000。输出描述: 整数N,最后一个单词的长度。示例1: 输入: hello world 输出: 5#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char s[5000]; int count = 0; int index = 0; wh
Qt调试弹出The CDB process terminated Qt调试弹出The CDB process terminated解决办法将Qt MinGw环境下的项目移植到msvc下,程序运行时报的错,遇到这种问题,可以从以下两方面入手:一种是查下是否引用了第三方库文件,若有引用,可去项目配置中添加lib和include相关文件(第三方库文件可在pro文件中添加,也可在系统环境变量中添加);另一种是直接双击生成的exe文件,会提示该项目缺少哪些dll文件,须一一添加,直到运行通过为止。...
Qt 生成dump文件 1.生成dump文件Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg打开。当我们的程序发布出去之后 , 在上位机上是无法跟踪自己代码的 BUG 的 ,, 所以 Dump 文件对于我们来说特别有用,最快的解决方式是生成dump文件,通过生成dump文件使用调试工具进行调试,还原程序崩溃时的状态,能够起到快速定位排查问题的作用 。//生成dump代码#inclu
Qt Quick 实例(二) @TOCQtQuick 自定义信号与使用实例简述在界面上添加两个按钮和一个text文本,点击按钮切换文本字体颜色,此处通过自定义信号来实现(在上一节基础上添加按钮)实例效果实例代码import QtQuick 2.5import QtQuick.Controls 1.4import QtQuick.Dialogs 1.2Rectangle { id: window visible: true width: 800 height: 600 col
Qt Quick 实例(一) QtQuick 无边框 透明窗体main.cpp#include <QCoreApplication>#include <QApplication>#include <QQmlApplicationEngine>#include <QColor>#include <QQmlContext>#include <QQuickView>int main(int argc, char *argv[]){ QCoreA