QtGlobal 常用函数
const char*Q_FUNC_INFO
Expands to a string that describe the function the macro resides in. How this string looks more specifically is compiler dependent. With GNU GCC it is typically the function signature, while with other compilers it might be the line and column number.
Q_FUNC_INFO can be conveniently used with qDebug().
展开为描述宏所在函数的字符串。这个字符串的具体外观取决于编译器。对于 GNU GCC,它通常是函数签名,而对于其他编译器,它可能是行号和列号。Q_FUNC_INFO 可以方便地与 qDebug() 一起使用。
For example, this function:
12345678910template<typename TInput ...
qUtf8Printable
函数介绍及注意事项
const char *qPrintable(const QString &str)
Returns str as a const char *. This is equivalent to str.toLocal8Bit().constData().
The char pointer will be invalid after the statement in which qPrintable() is used. This is because the array returned by QString::toLocal8Bit() will fall out of scope.
Note: qDebug(), qInfo(), qWarning(), qCritical(), qFatal() expect %s arguments to be UTF-8 encoded, while qPrintable() converts to local 8-bit encoding. Therefore qUtf8Printable() should ...
NotePadNext:简介和源码编译
NotePadNext 介绍
A cross-platform, reimplementation of Notepad++.
Though the application overall is stable and usable, it should not be considered safe for critically important work.
There are numerous bugs and half working implementations. Pull requests are greatly appreciated.
NotePadNext 是 Notepad++ 的重新实现,是跨平台的。
虽然应用程序总体上是稳定和可用的,但它不应该被认为是对至关重要的工作是安全的。
有许多错误和半工作实现。
通过下面链接可以获取更多的相关信息:
https://github.com/dail8859/NotepadNext
源码编译
12// 克隆源码及子模块的源码git clone --recursive https://github.com/dail8859/ ...
NotePadNext:序
前言
缘由:
该开源项目处于开发阶段,代码量不大应该能快速看懂
想看看外国佬是如何使用 Qt 开发开源项目
目前所学所作也是 Qt
本着学习和提升的目的,开始写 NotePadNext 源码分析文章。
目录
NotePadNext-0-序
NotePadNext-1-简介和源码编译
Qt问题-QtCreator调试程序问题
QtCreator 无法调试程序 操作系统位数不对
qtcreator is a 64 bit executable which can not be debugged by a 32 bit Debugger
C++ 11:线程
1234567891011121314151617181920212223242526272829303132333435// C++98 实现的多线程,依赖第三方库 pthread#include <pthread.h>#include <iostream>using namespace std;static long long total = 0;pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;void* func(void*){ long long i; for (i = 0; i < 100000000L; ++i) { pthread_mutex_lock(&m); total += i; pthread_mutex_unlock(&m); } return NULL;}int main(){ pthread_t thread1, thread2; if (p ...
C++ 11:tuple(元组)
tuple(元组)
函数
描述
tuple_size
实现固定大小的容器,它保有类型可以相异的元素
tuple_element
获得元组式类型的元素数
std::tuple_size<std::tuple>
获得元组式类型的元素类型
std::tuple_element<std::tuple>
获得指定元素的类型
std::uses_allocator<std::tuple>
特化 std::uses_allocator 类型特征
ignore(常量)
用 tie 解包 tuple 时用来跳过元素的占位符
make_tuple
创建一个 tuple 对象,其类型根据各实参类型定义
tie
创建左值引用的 tuple,或将 tuple 解包为独立对象
forward_as_tuple
创建转发引用的 tupl
tuple_cat
通过连接任意数量的元组来创建一个tuple
std::get(std::tuple)
元组式访问指定的元素
C++ 11:智能指针
C++ 11 中有 unique_ptr、shared_ptr 与 weak_ptr 等智能指针(smart pointer),定义在<memory>中。可以对动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。
名词
描述
unique_ptr
拥有管理内存的所有权,没有拷贝构造函数,只有移动构造函数,不能多个unique_ptr对象共享一段内存,可以自定义delete函数,从而支持delete [] 。
share_ptr
通过计数方式多个share_ptr可以共享一段内存,当计数为0的时候,所管理内存会被删除,可以自定义delete函数,从而支持delete[]。
weak_ptr
观察shared_ptr管理的内存对象 ,只观察但不拥有。成员函数lock返回shared_ptr对象,若对应内存已经删除,则shared_ptr对象==nullptr,weak_ptr对象可以拷贝构造,拷贝构造出来的对象和原对象观察的是同一段内存。成员函数reset可以解除对内存的观察,注意,是解除观察,并不会删除对应内存对象。可以 ...
SOLID 原则
S: 单一职责原则
O: 开闭原则
L: 里氏替换原则
I: 接口隔离原则
D: 依赖倒置原则