Qt记录

QFileSystemModel用法

参考

  1. 在头文件mainwindow.h中添加#include <QFileSystemModel>,并主窗口类中定义了一个QFileSystemModel类的成员变量modelQFileSystemModel *model;
  2. 在ui中添加Tree View
  3. 在mainwindow.cpp中添加
    1
    2
    3
    model = new QFileSystemModel(this);  //QFileSystemModel提供单独线程
    model->setRootPath(QDir::currentPath()); //设置根目录
    ui->treeView->setModel(model); //设置数据模型

  1. 运行后效果如下

QTcpSocket

参考
需要在.pro配置文件中添加QT += network

在窗口打印一些中间状态的字符串

qDebug << "打印";

输出某些信息到日志文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void MainWindow::actionLog(QString message)
{
QString logFileName = "action.log";
action_logFile.setFileName(logFileName);
action_logFile.open(QIODevice::WriteOnly | QIODevice::Append);
if(!action_logFile.isOpen())
{
qDebug() << "打开文件日志失败";
return;
}

QTextStream stream(&action_logFile);
QString str;
str += dateTime.currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");
str += ": ";
str += message;
str += "\r\n";
stream << str ;

action_logFile.close();
}

获取当前进程占用的内存信息

参考
getUsedMemory(GetCurrentProcessId());即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <windows.h>  // 用于获取当前程序运行时的信息
#include <QProcess>

double MainWindow::getUsedMemory(DWORD pid)
{
char pidChar[25];
//将DWORD类型转换为10进制的char*类型
_ultoa(pid,pidChar,10);

//调用外部命令
QProcess p;
p.start("tasklist /FI \"PID EQ " + QString(pidChar) + " \"");
p.waitForFinished();
//得到返回结果
QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
//关闭外部命令
p.close();

//替换掉","
result = result.replace(",","");
//匹配 '数字+空格+K'部分
QRegExp rx("(\\d+)(\\s)(K)");

//初始化结果
QString usedMem("");
if(rx.indexIn(result) != -1){
//匹配成功
usedMem = rx.cap(0);
}
//截取K前面的字符串,转换为数字,供换算单位使用。
usedMem = usedMem.left(usedMem.length()-1);
return usedMem.toDouble();
}

执行Shell命令

参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//执行shell指令或者shell脚本的方法
QString Common::executeLinuxCmd(QString strCmd)
{
QProcess p;
p.start("bash", QStringList() <<"-c" << strCmd);
p.waitForFinished();
QString strResult = p.readAllStandardOutput();
return strResult;
}

//实例
QString strResult1 = executeLinuxCmd("sudo sh /home/test.sh");

QString strResult2 = executeLinuxCmd("cat /etc/hostname");


----------- 本文结束 -----------




0%