LINUX.ORG.RU

размер окон в gtk3

 ,


0

1

есть такой вот тестовый код

#include <gtk/gtk.h>

int
main (int argc, char *argv[])
{
  GtkWidget *w, *b, *l;

  const gchar *txt = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut "
    "labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip "
    "ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat "
    "nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id "
    "est laborum.";

  gtk_init (&argc, &argv);

  l = gtk_label_new (txt);
  gtk_label_set_line_wrap (GTK_LABEL (l), TRUE);

  b = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
  gtk_box_pack_start (GTK_BOX (b), l, FALSE, TRUE, 0);

  gtk_widget_show_all (b);

  w = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_default_size (GTK_WINDOW (w), 600, -1);

  g_signal_connect (G_OBJECT (w), "delete-event", G_CALLBACK (gtk_main_quit), NULL);

  gtk_container_add (GTK_CONTAINER (w), b);

  gtk_widget_set_size_request (w, 600, -1);
  /*gtk_window_set_resizable (GTK_WINDOW (w), FALSE);*/

  gtk_widget_show (w);

  gtk_main ();

  return 0;
}

вроде, работает как ожидается. ширина окна - 600, текст переносится, все классно. стоит раскомментарить gtk_window_set_resizable - gtk на заданную ширину кладет с прибором, и, судя по всему, пытается использовать ширину экрана. как с этим бороться?

p.s. если задавать какой-то короткий текст, то все работает нормально, проблема только при переносе длинного текста

★★★★★

Последнее исправление: ananas (всего исправлений: 1)

#include <QApplication>
#include <QLabel>

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

    const auto msg =
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut "
        "labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip "
        "ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat "
        "nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id "
        "est laborum.";
    QLabel lbl(msg);
    lbl.setWordWrap(true);
    lbl.show();

    return app.exec();
}
RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

молоток, продолжай в том же духе, кувалдой станешь

ananas ★★★★★
() автор топика

Как вариант

l = gtk_label_new (txt);
gtk_label_set_line_wrap (GTK_LABEL (l), TRUE);
gtk_label_set_max_width_chars (GTK_LABEL (l), 90);

nvl ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.