QT仿QPS中心部件代码
时间: 2023-11-12 19:00:48 浏览: 34
以下是一个简单的QT仿QPS中心部件的代码示例:
```cpp
#include <QtWidgets>
class ProcessWidget : public QWidget
{
public:
ProcessWidget(QWidget *parent = nullptr) : QWidget(parent)
{
// 创建表格
m_table = new QTableWidget(this);
m_table->setColumnCount(3);
m_table->setHorizontalHeaderLabels(QStringList() << "Name" << "ID" << "CPU Usage");
m_table->verticalHeader()->hide();
m_table->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_table->setSelectionMode(QAbstractItemView::SingleSelection);
// 布局
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_table);
setLayout(layout);
// 更新进程列表
updateProcessList();
// 定时器每秒更新一次进程列表
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &ProcessWidget::updateProcessList);
timer->start(1000);
}
private:
QTableWidget *m_table; // 表格
// 更新进程列表
void updateProcessList()
{
// 获取进程列表
QList<QProcess *> processes = QProcess::runningProcesses();
// 清空表格
m_table->setRowCount(0);
// 遍历进程列表
for (QProcess *process : processes) {
// 获取进程信息
QString name = process->processName();
qint64 id = process->processId();
qreal cpuUsage = process->cpuUsage();
// 插入一行
int row = m_table->rowCount();
m_table->insertRow(row);
// 设置单元格内容
m_table->setItem(row, 0, new QTableWidgetItem(name));
m_table->setItem(row, 1, new QTableWidgetItem(QString::number(id)));
m_table->setItem(row, 2, new QTableWidgetItem(QString("%1%").arg(cpuUsage * 100, 0, 'f', 2)));
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ProcessWidget widget;
widget.show();
return app.exec();
}
```
该代码使用了QTableWidget来显示进程列表,并使用QProcess::runningProcesses()函数获取正在运行的进程列表。定时器每秒钟更新一次进程列表。