GTK Максимизация формы c ++ - PullRequest
1 голос
/ 18 июня 2020

Я использую Ubuntu 20.04, и у меня есть небольшая форма GTK 3.0, которую я пытаюсь получить при первом запуске. Позже я захочу включить это в проект Full GLADE, но сначала я просто пытаюсь развернуть его на весь экран.

Прокомментированные разделы - это то, что я безуспешно пытался. Ничего не работает, и это вызывает ошибки компилятора, может ли кто-нибудь помочь мне в моих усилиях?

#include <gtk/gtk.h>

 int main(int argc, char *argv[]) {

 GtkWidget *window;

 gtk_init(&argc, &argv);

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 gtk_window_set_title(GTK_WINDOW(window), "Center");
// gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
 // gtk_window_fullscreen(GTK_WINDOW(window);
// gtk_window_fullscreen(GtkWindow *window);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_widget_show(window);

  g_signal_connect(G_OBJECT(window), "destroy",
  G_CALLBACK(gtk_main_quit), NULL);

  gtk_main();

   return 0;
 }

Спасибо.

1 Ответ

1 голос
/ 18 июня 2020

Используйте gtk_window_maximize(GtkWindow *window):

#include <gtk/gtk.h>

 int main(int argc, char *argv[]) {

   GtkWidget *window;

   gtk_init(&argc, &argv);

   window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title(GTK_WINDOW(window), "Center");

   gtk_window_maximize(GTK_WINDOW(window));

   gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
   gtk_widget_show(window);

//...
 }

Обратите внимание, что вы можете вызывать перед отображением окна. Сделайте c:

Запрашивает развернуть окно, чтобы оно стало полноэкранным. Обратите внимание, что вы не должны предполагать, что окно определенно развернется после , потому что другие сущности (например, пользователь или оконный менеджер) могут снова развернуть его, и не все оконные менеджеры поддерживают максимизацию. Но обычно окно увеличивается до максимума. Только не пишите код, который в противном случае дает сбой.
Разрешено вызывать эту функцию перед отображением окна , и в этом случае окно будет развернуто, когда оно изначально появляется на экране.
Вы можете отслеживать максимизацию с помощью сигнала «window-state-event» в GtkWidget или путем прослушивания уведомлений в свойстве «is-maximized».

Предложение : Используйте gtkmm с C ++

Пример с gtkmm:

#include <gtkmm.h>

int main(int argc, char *argv[])
{
  auto app =
    Gtk::Application::create(argc, argv,
      "org.gtkmm.maximize.base");

  Gtk::Window window;
  window.maximize();

  return app->run(window);
} 
...