当前位置:网站首页>Qt基础知识汇总(持续刷新)
Qt基础知识汇总(持续刷新)
2022-04-22 06:05:00 【PRML_MAN】
Qt基础知识汇总
-
- 1、获取文件的绝对路径
- 2、判断文件是否存在
- 3、判断路径是否存在
- 4、注册结构体类型
- 5、QString 和string的转换
- 6、QVector 遍历方法
- 7、QThread 用法
- 8、QString 左侧或右侧截取子字符串
- 9、linux下 QT依赖库打包
- 10、linux QT开发中命令行需要输入密码操作
- 11、QString 和 数值 转换
- 12、QString 和 json转换
- 13、QString 和 QByteArray转换
- 14、Qt启动子进程,关闭父进程,子进程仍然存在
- 15、Qt 读写*.ini文件
- 16、Qt 文件创建和删除
- 17、状态机
- 18、Qt 使用sleep等待函数
- 19、Qt 文件读取和写入
- 20、Qt 事件循环:
- 21、获取本地时间
- 22、 async异步处理
- 23、bind函数
1、获取文件的绝对路径
获取绝对路径
#include<QFileInfo>
QString path = "/home/user/file.txt"
QFileInfo fi = QFileInfo(path);
QString absPath = fi.absolutePath(); // 提取绝对路径
获取文件名称
#include<QFileInfo>
QString path = "/home/user/file.txt"
QFileInfo fi = QFileInfo(path);
QString absPath = fi.fileName(); // 提取绝对路径
2、判断文件是否存在
QString file = "/home/user/file.txt"
if (QFile::exists(file)) {
qDebug()<<"file is exists";
}
3、判断路径是否存在
QString path = "/home/user"
if (QDir::exists(path )) {
qDebug()<<"dir is exists";
}
4、注册结构体类型
typedef struct {
int name;
int id;
} StuInfo;
qRegisterMetaType<StuInfo>("StuInfo");
5、QString 和string的转换
QString -> string:
string str = "test";
QString qstr = QString::fromStdString(str);
string -> QString
QString qstr = "test";
string str = qstr.toStdString();
QString -> char *
QString qstr = "test";
string str = qstr.toStdString().c_str();
char * -> QString
6、QVector 遍历方法
QVector<QString> vec;
QVector<QString>::iterator itor;
for (itor = vec.begin(); itor != vec.end(); itor++) {
QString tmp = *itor; // 记得用*itor。
qDebug()<<tmp << (*itor)<<endl;
}
7、QThread 用法
TestClass *obj = new TestClass();
QThread *thd = new QThread;
obj->moveToThread(thd);
thd->start();
8、QString 左侧或右侧截取子字符串
QString str = "12345678";
QString left3str = str.left(3); // 结果: “123”
QString right3str = str.right(3); // 结果:“678”
9、linux下 QT依赖库打包
通过ldd命令进行打包
ldd exeName > dependLibs.txt
awk '{print $3}' dependLibs.txt > libsPath.txt
cat libsPath.txt | while read line
do
echo "line->${line}"
cp $line ./
done
相关链接:https://blog.csdn.net/my393661/article/details/83502540
10、linux QT开发中命令行需要输入密码操作
1) echo 当前用户密码 | sudo -S 你的命令
2) echo "PASSWORD" | sudo -S sh -c " CMD1; CMD2;..."
QString cmd = "echo 123456 | sudo -S apt-get install";
相关链接:https://blog.csdn.net/qq_34207847/article/details/89029592
11、QString 和 数值 转换
QString 转int : toInt()
QString 转float: toFloat()
QString 转double: toDouble()
QString 转short: toShort()
QString 转long: toLong()
QString 转long long: toLongLong()
int, float, double, short, long, long long 转 QString:QString::number()
QString str = "100";
int t = str.toInt(); // QString -> int
t = 200;
str = QString::number(t); // int -> QString;
12、QString 和 json转换
QJsonDocument、QJsonParseError、QJsonObject、QJsonArray、QJsonValue
相关链接
相关链接2
13、QString 和 QByteArray转换
QString str = "aaaa";
QByteArray bytes = str.toUtf8();
QString s = QString::fromUtf8(bytes);
14、Qt启动子进程,关闭父进程,子进程仍然存在
QProcess::startDetached("/home/test");
15、Qt 读写*.ini文件
QSettings *m_setting;
m_setting = new QSettings("./test.ini",QSettings::IniFormat);
m_setting->setValue("mac", "aa:bb:cc:dd:ee:ff"); // 写入值
QString value = m_setting->value("mac").toString(); // 获取值
16、Qt 文件创建和删除
创建:
QFile file("/home/test.txt");
if (!file.exists()) {
file.open(QIODevice::WriteOnly|QIODevice::Text); // 创建文件
}
删除:
if (file.exists()) {
file.remove();
}
17、状态机
QStateMachine、QState、QEventTransition
18、Qt 使用sleep等待函数
QThread::sleep(seconds)
QThread::sleep(3); // 秒级等待
QThread::msleep(3000) // 毫秒级等待
19、Qt 文件读取和写入
read:
QFile file("/home/test.txt");
if (file.exists()) {
if (file.open(QIODevice::ReadWrite)) {
QByteArray ba;
ba = file.readAll();
file.close();
}
}
write:
if (file.exists()) {
if (file.open(QIODevice::WriteOnly)) {
QString str = "test";
file.write(str.toStdString().data());
file.close();
}
}
20、Qt 事件循环:
1 QCoreApplicaton::exec()
2 QApplication::exec()
3 QDialog::exec()
4 QThread::exec()
5 QDrag::exec()
6 QMenu::exec()
21、获取本地时间
QDateTime current_date_time =QDateTime::currentDateTime();
QString current_date =current_date_time.toString(“yyyy.MM.dd hh:mm:ss.zzz ddd”);
获取日期加时间
QDateTime current_date_time =QDateTime::currentDateTime();
QString current_date =current_date_time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");
获取时分秒
QTime curTime =QTime::currentTime();
int hour = curTime.hour();//当前的小时
int minute = curTime.minute();//当前的分
int second = curTime.second();//当前的秒
int msec = curTime.msec();//当前的毫秒
22、 async异步处理
void dataCopy(vector<int> &src, int *dst, int dstLen) {
int len = src.length();
int threadNum = 4;
future<void> futureList[threadNum]; // 定义一个future<void> 数组,用来存放async返回值,这里的void是异步函数的返回类型。
for (int i = 0; i < threadNum; i++) {
// for循环对每个线程启动async处理
futureList[i] = std::async(std::launch::async, [&](int start, int end) {
// policy是async,代表程序运行到这个地方,就已经开始运行后面的lamda表达式了
for (int j = start; j < end; j++) {
dst.at(j) = src.at(j);
}
}, i * len / threadNum, (i + 1) * len / threadNum); // 后面这两个是lamda表达式的输入参数。
}
for (int i = 0; i < threadNum; i++) {
futureList[i].wait(); // 等待所有线程结束
}
return;
}
23、bind函数
typedef std::function<void(int, int)> FUN
class BindFunc{
public:
void func(int start, int end) {
cout<<start<<"--"<<end;
}
BindFunc() {
m_func = std::bind(&BindFunc::func, this, placeholders::_1, placeholders::_2);
}
private:
FUN m_func;
}
(未完待续)
版权声明
本文为[PRML_MAN]所创,转载请带上原文链接,感谢
https://blog.csdn.net/PRML_MAN/article/details/117532574
边栏推荐
猜你喜欢
随机推荐
关于Mask-Rcnn中标注工具VIA(VGG Image Annotator)使用的详解
Use of Excel vlookup function
The app enters for the first time and pops up the service agreement and privacy policy
知识图谱可视化技术在美团的实践与探索
cmake qmake简单知识
Anaconda配置深度学习环境(yolo为例)
glide 4.0.0 之后与图片选择器Matisse 冲突
衣原体感染——原因、症状、治疗及预防
Flink的安装部署及WordCount测试
人这一生啊
知识图谱综述(三)
Google Colab的基本使用方法(一)
短视频内容理解与生成技术在美团的创新实践
饮食-肠道微生物群对心血管疾病的相互作用
对象需要额外新增属性,无需在实体新增属性,返回所需信息
好用的textview跑马灯效果
mysql时间函数查询
遇到数学公式中不认识的符号怎么办
【Latex】分数写法区别
自定义notifycation参考文章









