- 博客(14)
- 收藏
- 关注
原创 深拷贝和浅拷贝
浅拷贝:浅拷贝只是复制某个对象的引用,而不是复制对象本身,新旧对象还是共用同一块内存。只是对指针的拷贝,拷贝后两个指针指向同一个内存空间。深拷贝:深拷贝会创造一个一模一样的对象,新对象和原对象不共享内存,修改新对象不会改变原对象。对指针指向的内容进行拷贝(重新分配内存),经深拷贝后的指针是指向不同地址的指针。...
2022-04-24 22:22:54
270
原创 const 放在函数前后面的含义
const 放在函数后表示这个函数是常成员函数,常成员函数就是不能改变成员变量值的函数。例:.h文件.cpp文件(不修改成员变量).cpp文件(修改成员变量)就报错,则不能这样使用
2022-04-24 21:48:35
441
原创 内存泄漏的原因总结
一.内存泄漏:是指在程序代码中动态申请的、堆上的内存 由于某种原因、在使用后没有被释放,进而造成内存的浪费。少部分的内存泄漏不会影响程序的正常运行,不过如果是持续的内存泄漏会耗光系统内存,最终会导致程序卡死甚至系统崩溃。如果程序在正常地使用过程中,占用的内存随着时间推移不断增长,一般就说明存在内存泄漏的情况。例:1.使用 malloc 申请的内存要主动调用 free,new 申请的内存要主动调用 delete,否则就会导致内存泄漏2.使用 new 申请的数组,释放的时候要用 delete[] 删除,如
2022-04-24 21:34:31
3736
原创 C++正则匹配
string target = "IP = 127.0.0.1";regex e("[ |=]+");smatch sm;regex_search(target, sm, e);cout << "sm.prefix: " << sm.prefix() << std::endl;for (int i = 0; i < sm.size(); ++i){ cout << "sm[" << i << "]: " &l
2022-03-14 21:40:31
1083
原创 QT线程创建的两种方法
一.方法一1.主线程(TaskProcessing.h和TaskProcessing.cpp)2.子线程(ThreadWork.h和ThreadWork.cpp)二.方法二QT提供的第二种线程的创建方式弥补了第一种方式的缺点,用起来更加灵活,步骤如下:1.创建一个新的类,让这个类从QObject派生class ThreadWork:public QObject{…}2.在这个类中添加一个公共的成员函数,函数体就是要子线程中执行的业务逻辑class ThreadWork:publ
2022-03-06 23:01:03
7199
1
原创 简单的算法
一.冒泡排序:冒泡排序,它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小,首字母从Z到A)错误就把他们交换过来,走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小元素会经由交换慢慢浮到数列的顶端(升序或降序排列)。QVector list;list.push_back(1);list.push_back(3);list.push_back(2);list.push_back(4);list.push_bac
2022-03-06 17:20:59
87
原创 QThread类信号槽,静态函数,任务处理函数
一.Qt 线程信号槽1.//和调用exit()效果一样的,代用这个函数之后再调用wait()函数[slot]void QThread::quit();2.启动子线程QThread::start(Priority priority = InheritPriority);//线程退出,可能是会马上终止线程,一般情况下不使用这个函数void QThread::terminate();//线程中执行的任务完成了,发出该信号//任务函数中的处理逻辑执行完毕了[signal]void QThread:
2022-03-06 16:44:21
890
原创 QT线程QThread常用成员函数
一.QThread类常用API1.判断线程任务//判断线程中的任务是不是已经处理完毕bool QThread::isFinished() const;//判断子线程是不是在执行任务bool QThread::isRunning() const;2.Qt中线程可以设置优先级//得到当前线程的优先级Priority QThread::priority() const;//设置当前线程优先级void QThread::setPriority(Priority priority);优先级:Q
2022-03-06 16:15:39
975
原创 QT线程概念
在进行桌面应用程序开发的时候,假设应用程序在某些情况下需要处理比较复杂的逻辑,如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件,其他线程进行逻辑运算,多个线程各司其职,不仅可以提高用户体验还可以提升程序的执行效率。在qt中使用了多线程,有些事项是需要额外注意的:1.默认的线程在Qt中称之为窗口线程,也叫主线程,负责窗口事件处理或者窗口控件数据的更新。2.子线程负责后台的业务逻辑处理,子线程中不能对窗口对象做任何操作,这些事情需要交给
2022-03-06 15:23:37
580
原创 QT右键显示菜单栏
点击按钮,设置setContextMenuPolicy,然后点击按钮右键转到setContextMenuPolicy槽函数,然后在槽函数里写如下代码。void Widget::on_pushButton_customContextMenuRequested(const QPoint &pos){QMenu *pMenu = new QMenu(ui->pushButton);QAction *pAction1 = new QAction(tr(“删除”),this);pAction.
2022-03-03 23:21:20
436
原创 QT 读写配置文件
//判断文件是否存在QString Path = QCoreApplication::applicationDirPath();QString endPath = Path + "/Config/Para.ini";QFileInfo fileinfo(endPath);if(!fileinfo.isFile()){ qDebug()<<"文件不存在";}QSettings setting(endPath,QSettings::IniFormat);setting.beg
2022-02-10 22:04:37
331
原创 QT样式表
QT样式表主要应用于部件样式表可以使用QApplication::setStyleSheet()函数设置整个应用程序;也可以使用QWidget::setStyleSheet()函数将其设置到一个指定的部件(还有它的子部件上);以上设置了按钮部件的背景色...
2021-03-19 09:20:50
91
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人