20 / 15 / 6
Регистрация: 09.10.2021
Сообщений: 263
1

gtk4, xfce, linux,c++ - как создать textView со скроллингом?

05.05.2022, 17:24. Показов 1096. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подключаю бибилотеки:
C++
1
2
3
4
5
6
7
#include <gtk/gtk.h>
#include <glib.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
Создаю:
C++
1
2
3
4
  GtkWidget *grid   = gtk_grid_new();
  GtkWidget *button1 = gtk_button_new_with_label ("Reload");
  GtkWidget *label2  = gtk_label_new("test 123");
  GtkWidget *textview = gtk_text_view_new();
Добавляю в форму grid и в него элементы...
C++
1
2
gtk_grid_attach(GTK_GRID(grid), button1, 0, 1, 1, 1);
  gtk_grid_attach(GTK_GRID(grid), label2, 2, 2, 1, 1);
Добавляю на форме еще textview к тому grid'y:
C++
1
2
  gtk_window_set_child (GTK_WINDOW (win), grid);
  gtk_window_set_child (GTK_WINDOW (win), textview);
Но покказывается просто белое поле на всю форму,
а нужно 50% grid c элементами и 50% textview на форму win

Как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2022, 17:24
Ответы с готовыми решениями:

Xfce: как обновить значение label на форме gtk4?
#include &lt;gtk/gtk.h&gt; static void click1_cb (GtkButton *btn, GtkWidget *label2, gpointer...

Как создать vpn подключение в linux xfce?
Не понял, в гугле не нашёл.

Gtk4 c++ linux "Две кнопки на форме"
#include &lt;gtk/gtk.h&gt; static void activate(GtkApplication *app, void *user_data) { ...

Chrome OS Linux XFCE
Добрый день! Установил данную ось второй для Хромбука, необходима помощь в русификации XFCE, потому...

Linux Mint 13 XFCE
доброго времени суток, установил Linux Mint 13 XFCE на виртуал бокс очень понравилась, только вот...

2
20 / 15 / 6
Регистрация: 09.10.2021
Сообщений: 263
06.05.2022, 12:56  [ТС] 2
C++
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <gtk/gtk.h>
#include <glib.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
 
string GetStdoutFromCommand(string cmd) {
  string data;
  FILE * stream;
  const int max_buffer = 256;
  char buffer[max_buffer];
  cmd.append(" 2>&1");
 
  stream = popen(cmd.c_str(), "r");
  if (stream) {
    while (!feof(stream))
      if (fgets(buffer, max_buffer, stream) != NULL) data.append(buffer);
    pclose(stream);
  }
  return data;
}
 
static void connect(GApplication *app, gpointer *data) {
    puts("Connect menu item clicked.\n");
}
 
static void click1_cb (GtkWidget *btn, gpointer user_data) {
 
    if (user_data)
        gtk_label_set_text(GTK_LABEL(user_data), GetStdoutFromCommand("netstat -tuwapn").c_str());
}
 
static void activate(GApplication *app, gpointer *data) {
 
    GtkWidget *win = gtk_application_window_new(GTK_APPLICATION(app));
    gtk_window_set_title(GTK_WINDOW(win), "Network connections");
    gtk_window_set_default_size(GTK_WINDOW(win), 700, 700);
 
  GtkWidget *grid   = gtk_grid_new();
  GtkWidget *label2  = gtk_label_new("test software");
GtkTextBuffer *buffer;
GtkWidget *view = gtk_text_view_new ();
 
 
    GSimpleAction *act_connect = g_simple_action_new("Connect", NULL);
    g_action_map_add_action(G_ACTION_MAP(app), G_ACTION(act_connect));
    g_signal_connect(act_connect, "activate", G_CALLBACK(connect), NULL);
 
// Create a new button
  GtkWidget *button1 = gtk_button_new_with_label ("Reload");
  GtkWidget *button2 = gtk_button_new_with_label ("Exit");
 
 
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
//gtk_text_buffer_set_text (buffer, "Hello, this is some text", -1); 
gtk_text_buffer_set_text (buffer,GetStdoutFromCommand("netstat -tuwapn").c_str(), -1); 
 
 
 
  gtk_grid_attach(GTK_GRID(grid), button1, 0, 1, 1, 1);
  gtk_grid_attach(GTK_GRID(grid), button2, 1, 1, 1, 1);
  gtk_grid_attach(GTK_GRID(grid), label2, 2, 10, 50, 400);
  gtk_grid_attach(GTK_GRID(grid), view, 40, 40, 100, 400);
 
  gtk_window_set_child (GTK_WINDOW (win), grid);
 // gtk_window_set_child (GTK_WINDOW (win), view);
 
  // When the button is clicked, close the window passed as an argument
 g_signal_connect (button1, "clicked", G_CALLBACK (click1_cb), label2);
 g_signal_connect_swapped (button2, "clicked", G_CALLBACK (gtk_window_close), win);
 
 gtk_window_present(GTK_WINDOW(win));
}
 
int main(int argc, char **argv) {
    GtkApplication *app;
    int stat;
 
    app = gtk_application_new("com.test", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
    stat = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);
    return stat;
}
Пока такой код...
label не дает в ширину расшириться textview'у...
Как все эти 4 виджета:
C++
1
2
3
4
  gtk_grid_attach(GTK_GRID(grid), button1, 0, 1, 1, 1);
  gtk_grid_attach(GTK_GRID(grid), button2, 1, 1, 1, 1);
  gtk_grid_attach(GTK_GRID(grid), label2, 2, 10, 50, 400);
  gtk_grid_attach(GTK_GRID(grid), view, 40, 40, 100, 400);
Как сделать им нормальное расположение?
Миниатюры
gtk4, xfce, linux,c++ - как создать textView со скроллингом?  
0
20 / 15 / 6
Регистрация: 09.10.2021
Сообщений: 263
06.05.2022, 13:03  [ТС] 3
И такой скриншот еще у этих исходных кодов, после нажатия на кнопки на этой форме..
Миниатюры
gtk4, xfce, linux,c++ - как создать textView со скроллингом?  
0
06.05.2022, 13:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2022, 13:03
Помогаю со студенческими работами здесь

Как скомпилировать "hello world под xfce" на linux из терминала (консоли)?
Исходные коды Hello World реально написать на java в простом mousepad на linux? И как, потом,...

Терминал в Linux Mint 17.2 Xfce
Не могу писать в терминале, в терминале даже нет этой &quot;каретки&quot;, раньше стоял cinnamon, все...

Лаги CS:GO на Linux Mint Xfce
Сижу уже давно на Линукс минт:), и интересует один вопрос (всмысле что мне делать). Вообще в кс го...

Ubuntu 14.04 или Mint Linux 17 XFCE
Подскажите как ОС лучшие более надежная Ubuntu 14.04 или Mint Linux 17 XFCE, сейчас у меня стоит...

Не могу установить Mint Linux 13 XFCE
Есть диск с Mint Linux 13, я с него устанавливал на 4 ПК, диск не потертый, а на этом ПК возникли...

Посоветуйте частообновляемый linux на xfce на 32 bit intel?
Посоветуйте частообновляемый linux на xfce на 32 bit intel? p.s: xubuntu более не создается для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru