#include <gtk/gtk.h> #include <stdlib.h> #include <stdio.h> #include <string.h>

int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *table; GtkWidget *label; GtkWidget *button; GtkWidget *hbox; GtkWidget *vbox; GtkWidget *separator; GtkWidget *scrolled_window; GtkWidget *list;

gchar *column_names[] = {"Process Name", "CPU Usage (%)", "Memory Usage (MB)"};

gtk_init(&argc, &argv);

// 创建主窗口
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Task Manager");
gtk_window_set_default_size(GTK_WINDOW(window), 600, 400);

// 创建表格布局
table = gtk_table_new(2, 2, TRUE);
gtk_container_add(GTK_CONTAINER(window), table);

// 创建标签
label = gtk_label_new("Process List");
gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);

// 创建分割线
separator = gtk_hseparator_new();
gtk_table_attach_defaults(GTK_TABLE(table), separator, 0, 2, 1, 2);

// 创建滚动窗口
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_table_attach_defaults(GTK_TABLE(table), scrolled_window, 0, 2, 2, 3);

// 创建列表
list = gtk_tree_view_new();
gtk_container_add(GTK_CONTAINER(scrolled_window), list);

// 创建列
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkListStore *store;

store = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_FLOAT, G_TYPE_FLOAT);
gtk_tree_view_set_model(GTK_TREE_VIEW(list), GTK_TREE_MODEL(store));

for(int i = 0; i < 3; i++) {
    renderer = gtk_cell_renderer_text_new();
    column = gtk_tree_view_column_new_with_attributes(column_names[i], renderer, "text", i, NULL);
    gtk_tree_view_append_column(GTK_TREE_VIEW(list), column);
}

// 填充列表
GtkTreeIter iter;
gchar *process_name;
float cpu_usage;
float memory_usage;

// 这里只是一个示例,填充一些随机数据
for(int i = 0; i < 10; i++) {
    process_name = g_strdup_printf("Process %d", i+1);
    cpu_usage = ((float) rand() / (float) RAND_MAX) * 100;
    memory_usage = ((float) rand() / (float) RAND_MAX) * 1000;

    gtk_list_store_append(store, &iter);
    gtk_list_store_set(store, &iter, 0, process_name, 1, cpu_usage, 2, memory_usage, -1);
}

// 创建水平盒子
hbox = gtk_hbox_new(FALSE, 0);
gtk_table_attach_defaults(GTK_TABLE(table), hbox, 0, 1, 3, 4);

// 创建垂直盒子
vbox = gtk_vbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(hbox), vbox);

// 创建按钮
button = gtk_button_new_with_label("End Process");
gtk_container_add(GTK_CONTAINER(vbox), button);

// 显示窗口
gtk_widget_show_all(window);

// 运行主循环
gtk_main();

return 0;

}

该代码创建了一个主窗口,其中包含一个表格布局,一个标签,一个分割线,一个滚动窗口和一个列表。列表中包含进程名称、CPU使用率和内存使用量的三列。在这个示例中,我们只是随机填充了一些数据作为示例。

GTK+3 简易任务管理器代码示例 - 查看运行进程信息

原文地址: https://www.cveoy.top/t/topic/nDYg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录