LINUX.ORG.RU

Сообщения wersto8top

 

linux gtkmm c++ g++: class Gtk::Application’ has no member named ‘make_window_and_run’

При попытке скомпилировать данный код на linux c++ через g++, с официальной документации https://developer-old.gnome.org/gtkmm-tutorial/stable/sec-basics-simple-example.html.en

#include <gtkmm.h>

class MyWindow : public Gtk::Window
{
public:
  MyWindow();
};
MyWindow::MyWindow() {
  set_title("Basic application");
  set_default_size(200, 200);
}
int main(int argc, char* argv[]) {
  auto app = Gtk::Application::create("gtk.org");
  return app->make_window_and_run<MyWindow>(argc, argv);
}

Получаю следующую ошибку в консоли (terminal’e):

/$ g++ -o test test.cpp $(pkg-config gtkmm-3.0 --cflags --libs gtk4)
test.cpp: In function ‘int main(int, char**)’:
test.cpp:19:15: error: ‘class Gtk::Application’ has no member named ‘make_window_and_run’
   19 |   return app->make_window_and_run<MyWindow>(argc, argv);
      |               ^~~~~~~~~~~~~~~~~~~
test.cpp:19:43: error: expected primary-expression before ‘>’ token
   19 |   return app->make_window_and_run<MyWindow>(argc, argv);
      |                                           ^

 , , ,

wersto8top
()

Как отлавливать ошибки при запуске и работе программы?

Вот программа:

#include <gtk/gtk.h>
#include <glib.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;



static void click1_cb (GtkButton *btn1, gpointer user_data, int & n) {
 const gchar *s;


  s = gtk_button_get_label (btn1);
  if (g_strcmp0 (s, "Hello.") == 0) {
    gtk_button_set_label(btn1, "Good-bye.");
    n = 1;
  } else {
    gtk_button_set_label(btn1, "Hello.");
       n = 2;
}

 }

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
  app_activate (GApplication *app, gpointer user_data) {


  GtkWidget *win;
  GtkWidget *box;
  GtkWidget *btn1;
  GtkWidget *label;
  GtkWidget *label2;
  GtkWidget *grid;
  GtkWidget *textview = gtk_text_view_new();

 int n = 0;

  // app is new
 win = gtk_application_window_new (GTK_APPLICATION (app));
  gtk_window_set_title (GTK_WINDOW (win), "win");
   gtk_window_set_default_size (GTK_WINDOW (win), 500, 300);


// setup box1
  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
  gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
  gtk_widget_set_halign (box, GTK_ALIGN_START);
  gtk_widget_set_valign (box, GTK_ALIGN_START);
  gtk_window_set_child (GTK_WINDOW (win), box);

// setup labels
	//label = gtk_label_new(GetStdoutFromCommand("netstat -tuwapn").c_str());
	//GetStdoutFromCommand("netstat -tuwapn").c_str()
        label = gtk_label_new("dfgdf");
        gtk_label_set_markup(GTK_LABEL(label), "<span font_desc=\"sans 20\">Network Connections</span>);");
       // label2 = gtk_label_new(GetStdoutFromCommand("netstat -tuwapn").c_str());
        //gtk_label_set_markup(GTK_LABEL(label2), "<span style=\"bold\">%s</span>");
// button
  btn1 = gtk_button_new_with_label ("Reload.");
  g_signal_connect (btn1, "clicked", G_CALLBACK(click1_cb), &n);
  gtk_widget_set_margin_top (btn1, 1);

// grid
	grid = gtk_grid_new ();
	gtk_grid_set_row_spacing (GTK_GRID (grid), 1);
    gtk_window_set_child (GTK_WINDOW (win), grid);
	gtk_grid_attach (GTK_GRID (grid), btn1,20, 3, 20, 50);
	gtk_grid_attach (GTK_GRID (grid), label,200, 3, 200, 50);
//	gtk_grid_attach (GTK_GRID (grid), label2,300, 4, 50, 50);
	  
// show window
   gtk_widget_show (win);
}
 int main (int argc, char **argv) {
  GtkApplication *app;
 int stat;

 app = gtk_application_new ("gtk.org", G_APPLICATION_FLAGS_NONE);
 g_signal_connect (app, "activate", G_CALLBACK (app_activate), NULL);
 stat =g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);
  return stat;
}

Все синтаксически правильно, программа компилируется на linux’e g++ xfce. Но, при работе она сама закрывается так и не выполнив весь код. Конкретно ошибка, в этой части кода, когда присываивается цифра переменной типа int.

static void click1_cb (GtkButton *btn1, gpointer user_data, int & n) {
 const gchar *s;


  s = gtk_button_get_label (btn1);
  if (g_strcmp0 (s, "Hello.") == 0) {
    gtk_button_set_label(btn1, "Good-bye.");
    n = 1;
  } else {
    gtk_button_set_label(btn1, "Hello.");
       n = 2;
}

 }

когда удаляю строки n = 1 и n = 2; прорамма нормально работает. Вот, вопрос,возможно, нужно присваивать не int и указателю на *int? И какой тулзой можно посмотретьь, при запуске и работе такого bin файла, почему он впадает в crash, т.е.сам выключается?

 , ,

wersto8top
()

Как лучше сделать динамическое обновление label (widget) на gtk4 linux?

Вот программа:

#include <gtk/gtk.h>
#include "2.h"
#include <glib.h>
// writing a text file
#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
  app_activate (GApplication *app, gpointer user_data) {
  GtkWidget *win;
  GtkWidget *box;
  GtkWidget *label;
  GtkWidget *grid;
  GtkWidget *textview = gtk_text_view_new();


  // app is new
 win = gtk_application_window_new (GTK_APPLICATION (app));
  gtk_window_set_title (GTK_WINDOW (win), "win");
   gtk_window_set_default_size (GTK_WINDOW (win), 700, 300);

// setup box1
  box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
  gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
  gtk_widget_set_halign (box, GTK_ALIGN_START);
  gtk_widget_set_valign (box, GTK_ALIGN_START);
  gtk_window_set_child (GTK_WINDOW (win), box);

// setup labels
	label = gtk_label_new(GetStdoutFromCommand("netstat -tuwapn").c_str());
	//GetStdoutFromCommand("netstat -tuwapn").c_str()

 
// grid
	grid = gtk_grid_new ();
	gtk_grid_set_row_spacing (GTK_GRID (grid), 1);
    gtk_window_set_child (GTK_WINDOW (win), grid);
	gtk_grid_attach (GTK_GRID (grid), label,200, 3, 50, 50);

	  
// show window
   gtk_widget_show (win);
}
 int main (int argc, char **argv) {
  GtkApplication *app;
 int stat;

 app = gtk_application_new ("gtk.org", G_APPLICATION_FLAGS_NONE);
 g_signal_connect (app, "activate", G_CALLBACK (app_activate), NULL);
 stat =g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);
  return stat;
}

https://ibb.co/5Fb7Thd - это монитор интернет-соединений. Компилируется эта программа, следующей командой: g++ -o test test.cpp $(pkg-config --cflags --libs gtk4) Но он статический. Как на c++ linux делается динамическое обновление этого widget’a label (текстовое поле), чтобы текст в нем менялся, каждые 5 секунд? через сигналы как на qt? через дополнительной демон на c++ в linux по cron’у? Как лучше сделать динамическое обновление label (widget) на gtk4 linux?

 , , ,

wersto8top
()

Какой это стандарт html+css?

вот стандарт html5,css3 https://wordpress.org/themes/ в шаблонах (дизайнах, темах) для wordpress, их можно скачать и посмотреть исходные коды стилей css к html5 ..<span style=\"italic\">\%s</span> это уж точно не html5+css3…..это какой стандарт html,css?

 ,

wersto8top
()

Изменить тип данных строки..

Вот получаю данную ошибку:

In function ‘void app_activate(GApplication*, gpointer)’:test.cpp:62:52: error: cannot convert ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘const char*’
   62 |         label = gtk_label_new( GetStdoutFromCommand("netstat -tuwapn"));std::string {aka std::__cxx11::basic_string<char>}

Не понимаю, как изменить тип данных с std::string на const char* на чистом «linux c++»?

 , , ,

wersto8top
()

Как получить список необходимых библиотек (deb-файлов) для запуска bin-файла на xubuntu 21.10?

Bin-файл программы требует на свежеустановленной xubuntu 21.10 также установить необходимые библиотеки (в xubuntu 21.10 это deb-файлы). Как получить список необходимых библиотек (deb-файлов) для запуска bin-файла на xubuntu 21.10?

 , ,

wersto8top
()

Почему в xubuntu редактор веб-кода komodo edit показывает синтаксис php, а редактор c++ bluefish нет?

Мне нужно в редакторе кода смотреть синтаксис c++ кода, вплоть до подсветки c++ функций в коде.Но у меня, здесь слабый pc,и удается работать только на bluefish-редакторе или вообще в mousepad. Почему в xubuntu 21.10 редактор веб-кода komodo edit показывает синтаксис php https://ibb.co/6HXL3L5 , а редактор c++ bluefish https://ibb.co/sj475jr не показывает синтаксис и подсветку c++ кода и функций c++?

Перемещено shell-script из development

 , , ,

wersto8top
()

Как бороться с «багом» обновления файла в xubuntu 21.10 на hdd?

Выполняю команду g++ на linux (xubuntu 21.10):

g++ -o test test.cpp $(pkg-config --cflags --libs gtk4)

Но файл bin test периодически после этой команды (компиляция файла) не обновляется. Файл лежит в /home/user. Пыталcя очищать папку /tmp не помогает. Может быть есть какая-нибудь тулза для сброса ram, или сброса последних файловых операций в hdd, не знаю как это назвать - нужно делать разработку. Как бороться с этим «багом» обновления файла в xubuntu 21.10 на hdd?

Перемещено xaizek из security

 , , ,

wersto8top
()

Gtk4 linux. Как изменить размер кнопки на форме?

Вот исходные коды (очень маленький файл): https://file.io/ec1UDsEqDo7M https://file.io/drqkRD5oKlzo это c++ на linux gtk4 Вот скриншот программы - формы на gtk4 linux: https://ibb.co/sJPHvLm

Вот, вопрос, как изменить размер (width, height) кнопок на форме?

 , , ,

wersto8top
()

Почему мне в chrome на xubuntu, не приходят «уведомления» во вконтакте?

Включаю в веб-интерфейсе vk.com вконтакте уведомления о новых сообщениях вконтакте. Почему мне в chrome на xubuntu, не приходят «уведомления» во вконтакте «почти все последние 12 лет» с 2009 года по 2021 год?

Перемещено shell-script из security

 , , ,

wersto8top
()

Должны существовать программы для обновления bios'a с usb-флешки.

Должны существовать программы для обновления bios’a с usb-флешки. Сделал «слепок» bios’a из консоли linux, или даже через gtk-программу. Записал, это «обновление» bios’a на usb-флеш’ку..и потомв случае «краха» bios’a вставил флешку в компьютер, ноутбук и при включении запустил обновление bios’a. И компьютеры, ноутбуки по идее тоже должны поддерживать такое обновление bios’a с usb-флеш’ки.

 , ,

wersto8top
()

Какими инструментами в linux можно разработать свою ide, типа netbeans?

Какими инструментами в linux можно разработать свою ide, типа netbeans?

 , ,

wersto8top
()

Как скомпилировать 2 и более файлов .cpp в одну программу на linux?

Как скомпилировать 2 и более файлов .cpp в одну программу на linux? Понятно, через терминал (консоль) linux через gcc/g++…Но как добавить 2 и более файлов .cpp в другой «основной» файл .cpp? команда #include добавляет ведь, только библиотеки??

 , ,

wersto8top
()

xubuntu 21.10. visual studio code. Как добавить в нее поддержку «компиляции .cpp-файла с json»?

xubuntu 21.10. visual studio code.На скриншоте, показываю ошибку, котору получаю в visual studio code, при попытке «скопилировать и запустить с json .cpp файл» https://ibb.co/0FbTTpj .

Как добавить в нее поддержку «компиляции .cpp-файла с json»?

 ,

wersto8top
()

Как можно подключить смартфон на android к linux по usb?

Как можно подключить смартфон на android к linux по usb? Какими инструментами в linux и что можно смотреть про этот смартфон на android? Что можно разрабатывать для android из linux и с помощью каких инструментов, кроме android studio?

 ,

wersto8top
()

Xubuntu 21.10. Почему кнопка на gtk форме не работает?

Есть код:

#include <gtk/gtk.h>
static void activate(GtkApplication *app, void *user_data) {
    GtkWidget *window = gtk_application_window_new(app);
    GtkWidget *win = gtk_window_new ();
    gtk_window_set_application (GTK_WINDOW (win), GTK_APPLICATION (app));
    gtk_window_set_default_size (GTK_WINDOW (win), 400, 300);
    gtk_widget_show (win);

    GtkWidget *lab = gtk_label_new ("Hello.");
    gtk_window_set_child (GTK_WINDOW (win), lab);
    gtk_widget_show (win);


    GtkWidget *box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
    gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
    gtk_window_set_child (GTK_WINDOW (win), box);

    GtkWidget *btn1 = gtk_button_new_with_label ("Hello.");
    g_signal_connect (btn1, "clicked",G_CALLBACK (gtk_window_close), NULL);
    GtkWidget *btn2 = gtk_button_new_with_label ("Quit");
    g_signal_connect (btn2, "clicked", G_CALLBACK (gtk_window_close), win);

    gtk_box_append (GTK_BOX (box), btn1);
    gtk_box_append (GTK_BOX (box), btn2);

    gtk_widget_show (win);

}

int main(int argc, char *argv[]) {
    g_autoptr(GtkApplication) app = gtk_application_new(NULL, G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);

    return g_application_run(G_APPLICATION(app), argc, argv);
}

Скриншот: https://ibb.co/XsFwZgr

Данная код в xubuntu 21.04 .. в нем нормально кнопка Quit закрывала приложение. Но в xubuntu 21.10 данный код не работает, кнопка Quit не закрывает приложение. Что делать?

 ,

wersto8top
()

Создание полноценного bin-файла программы..hello world.

Я в консоле (терминале) на xubuntu через gcc скомпилировал файл простой программы, типа hello world. Но он запускается только из консоли (терминал) через команду ./file , а мне нужно, чтобы он запускался левым двойным щелчком мыши (имеется ввиду в xfce), и также я бы хотел, чтобы он запускался левым двойным щелчком мыши в ubuntu (gnome или что там..unity) и в kubuntu (kde)..как это сделать?

 

wersto8top
()

В каком редакторе c/c++ лучше разрабатывать 3d-игры для ubuntu?

В каком редакторе c/c++ и в каком редакторе графики лучше разрабатывать 3d-игры для ubuntu?

 

wersto8top
()

RSS подписка на новые темы