当前位置:网站首页>基于Qt开发实现的任务管理器
基于Qt开发实现的任务管理器
2022-06-11 14:05:00 【biyezuopinvip】
资源下载地址:https://download.csdn.net/download/sheziqiong/85610792
TaskManager
采用qt creator在unbuntu14.04环境下开发的任务管理器
1.实验设计
1.1.整体设计
系统划分为如下几个模块:
系统信息模块,包含的功能有:
- 获取并显示主机名;
- 获取并显示系统启动的时间;
- 显示系统到目前为止持续运行的时间;
- 显示系统的版本号;
- 显示cpu的型号和主频大小。
进程信息模块,包含的功能有:
- 通过pid或者进程名查询一个进程,并显示该进程的详细信息,提供杀掉该进程的功能;
- 显示系统所有进程的一些信息,包括pid,ppid,占用内存大小,优先级等等。
性能模块,包含的功能有:
- cpu使用率的图形化显示;
- 内存和交换分区(swap)使用率的图形化显示。
状态栏模块,包含的功能有:
- 在状态栏显示当前时间;
- 在状态栏显示当前cpu使用率;
- 在状态栏显示当前内存使用情况。
运行新进程模块,包含的功能有:
- 用新进程运行一个其他程序。
关机模块,包含的功能有:
- 关机、重启、挂起功能。
1.2.详细设计
系统信息模块、进程信息模块和性能模块显示在一个Tab Widget控件中,用槽函数on_tabWidget_currentChanged响应页面变化事件,该函数中调用show_tab_info函数来根据当前的页面号调用不同的函数刷新界面;状态栏模块显示在状态栏中;运行新进程模块和关机模块显示在菜单栏中。
- 系统信息模块
该模块对应的函数是show_system_info,该函数中都是先读取相应文件中相应字段的信息,然后显示在相应的Label控件中。其中系统启动时间是由系统当前时间减去系统持续运行时间算出来的。 - 进程信息模块
该模块对应的函数是show_process_info,该函数通过读取/proc目录下所有数字文件夹下的stat文件中相应的字段内容获取所有进程的信息,然后将这些内容显示在TableWidget控件中。
查询功能对应的槽函数为on_pushButton_Search_clicked,当查询按钮按下时就会执行该函数。该函数首先读取查询按钮左边的LineEdit控件中输入的内容,然后将其与TableWidget中的前两列即pid和进程名对应的列中的内容进行对比,如果有相同的,则定位到该行,反之,用消息提示框提示用户查询的进程不存在。
刷新功能对应的槽函数是on_pushButton_Refresh_clicked,该函数就是调用了show_tab_info函数将当前tab页面刷新了。
结束进程功能对应的槽函数是on_pushButton_KillPro_clicked,该函数中首先获取当前选中的行对应的pid,然后用system函数使用系统命令“kill pid ”结束选定的进程。 - 性能模块
该模块对应的函数是show_capability,在该函数中主要是计算当前cpu、内存和交换分区的使用率,然后调用update函数触发paintEvent函数利用获得的数据绘制图像。由于图像需要动态刷新,所以利用定时器让show_capability函数每隔1s就被调用一次。
paintEvent函数中利用QPainter类在pixmap类上作图,用全局的数组pts来存储show_capability函数中计算出的cpu、内存和交换分区的使用率。而且需要动态调整pts数组中的数据:当曲线到达窗口最左端的时候就舍弃最前面的一个点;当窗口宽度变大时就扩大pts数组的长度;当窗口宽度变小时,先判断当前宽度能否容纳现有的数据,若能,则减小pts数组的长度,若不能,则舍弃前面不能绘制的点。为了让纵坐标变化时图形也不变形,pts数组中存储的是纵坐标的比例,当绘制图形时再乘以当前图像的高度。 - 状态栏模块
该模块需要动态刷新,所以用定时器每1s刷新一次,对应的槽函数为time_out_update_status_bar,当前时间是通过time函数获取的,cpu使用率和内存使用情况使用的是性能模块中的show_capability函数中计算出来的结果,最后调用StatusBar的showMessage函数显示信息。 - 运行新进程模块
该模块对应的函数是on_action_triggered,该函数中首先调用QFileDialog::getOpenFileName显示文件对话框,当用户选中文件后返回文件的路径。然后根据路径判断该文件是不是可执行文件,若是,则利用fork和execv函数运行该程序;若不是,则用的对话框提示用户。 - 关机模块
该模块对应的函数为on_action_3_triggered、on_action_4_triggered、on_action_5_triggered,分别对应关机、重启、挂起功能。关机命令是shutdown -h now或halt;重启命令是shutdown -r now或reboot;挂起命令是rtcwake -m mem -s time,该命令中可以让用户选择挂起多长时间。这三个功能都需要root权限。
2.实验结果
系统信息模块
该模块的运行结果如图1所示。
图 1
进程信息模块
该模块的运行结果如图2所示。当输入CD,并点击查询后,焦点定位到该进程所在的行,如图2所示。
图 2
然后点击结束进程按钮,系统弹出提示框,如图3所示。
图 3
选择yes,出现如图4所示对话框,表明已杀死该进程。
图 4
点击yes,发现进程总数减少了1个,如图5所示。
图 5
再次查询CD,系统提示该进程不存在,如图6所示。
图 6
性能模块
该模块的运行结果如图7所示,放大后的效果如图8所示。
图 7
图 8
图 9
- 运行新进程模块
该模块在菜单上的运行结果如图10所示。
图 10
点击新建任务,出现如图11所示的对话框。
图 11
选中TaskManager,发现又有一个任务管理器运行,如图12所示。
图 12
若选择一个不可执行文件,出现如图13所示的错误提示。
图 13
- 关机模块
该模块在菜单栏上的运行结果如图14所示。
图 14
为测试这三个功能,需要在终端先进入该进程所在的目录,然后输入sudo TaskManger。这时若选择关机,则系统关机;若选择重启,则系统重启;若选择挂起,则弹出如图15所示对话框,点击ok后系统会挂起用户选择的时间长度。
图 15
资源下载地址:https://download.csdn.net/download/sheziqiong/85610792
边栏推荐
- 【Try to Hack】URL
- HR doesn't want to read such a PDF technical resume at all. How can it be in the hands of the interviewer?
- 三级分类展示
- Which exchange is PTA futures on? How can PTA futures be safe?
- Leetcode 1963. 使字符串平衡的最小交换次数(学习)
- 【公开课预告】:MXPlayer OTT音视频转码实践和优化
- 使用cpolar远程办公(1)
- JSP implementation of performance appraisal system for bank counter business
- CVPR 2022 | neural radiation field geometry editing method nerf editing
- SAP Spartacus checkout 流程使用 url 粘贴直接跳转到 delivery mode不能打开页面的原因
猜你喜欢

使用cpolar远程办公(1)

Vi LXD deployment of lab server for development records

折叠表达式

2022年全国最新消防设施操作员(初级消防设施操作员)题库及答案

MySQL advanced statement

Leetcode 1962. 移除石子使总数最小(应该是向上取整)

Introduction to reverse learning - excellent assembly debugging tool OllyDbg
![Invalid bound statement (not found) error [resolved]](/img/53/198f83e6252ba977c4aeec9bfb98f5.png)
Invalid bound statement (not found) error [resolved]

Interview to build an aircraft carrier, screw on the job, pay

cadence SPB17.4 - allegro - allegro_ free_ viewer
随机推荐
Learning notes of yolov3: model structure of yolov3
Just after the college entrance examination, I was confused and didn't know what to do? Tell me what I think
Hashicopy之nomad应用编排方案08(检测Job)
C# 设置窗体和系统的光标形状
YOLOv3学习笔记:YOLOv3的模型结构
无延时/无延迟视频直播实例效果案例
[issue 268] accidentally submit the test code to the production environment. I will teach you six ways to solve it in seconds!
Terraformer importing cloud resources
SQL: how to use the data of purchase order and sales order to calculate commodity cost by moving weighted average method
Container -- reverse content -- use of explosion, splicing, and inversion functions
2022.2.28 variable length sequence table
Alibaba Cloud 3 (Soaring Falcon) x86_ 64 (py3.7.8) system Yum source
Installation and use of Anaconda
create_engine mysql connector加密方式报错
使用cpolar远程办公(1)
Easyexcel configuration and Application
Each of D is inconsistent with the map
Solve the circular dependency bug. Relying upon circular references is discouraged and they are prohibited by default.
Why does each running Department display that the database already exists, delete the database, and then succeed? Each running department must delete the database, and re run the whole successfully
cadence SPB17.4 - group operation(add to group, view group list, delete group)