Контроль размеров виджетов GTK - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу иметь приложение GTK, которое в качестве первой итерации должно иметь длинный список, скрытый виджет и нижнюю строку. Все это должно быть выложено вертикально.

До сих пор я пытался сделать это с помощью метода расширения, но это, похоже, не дает никакого эффекта:

package main

import (
    "log"

    "github.com/gotk3/gotk3/glib"
    "github.com/gotk3/gotk3/gtk"
)

func main() {
    // Initialize GTK without parsing any command line arguments.
    gtk.Init(nil)

    // Create a new toplevel window, set its title, and connect it to the
    // "destroy" signal to exit the GTK main loop when it is destroyed.
    win, err := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
    if err != nil {
        log.Fatal("Unable to create window:", err)
    }
    win.SetDecorated(false)
    win.SetTitle("Simple Example")
    win.Connect("destroy", func() {
        gtk.MainQuit()
    })

    // Create a new label widget to show in the window.
    l, err := gtk.LabelNew("Hello, gotk3!")
    if err != nil {
        log.Fatal("Unable to create label:", err)
    }

    ls, err := gtk.ListStoreNew(glib.TYPE_STRING, glib.TYPE_STRING)
    if err != nil {
        log.Fatal("Unable to create list:", err)
    }

    tv, err := gtk.TreeViewNewWithModel(ls)
    if err != nil {
        panic(err)
    }

    lb, err := gtk.ListBoxNew()
    if err != nil {
        panic(err)
    }

    fr, err := gtk.ListBoxRowNew()
    if err != nil {
        panic(err)
    }

    sr, err := gtk.ListBoxRowNew()
    if err != nil {
        panic(err)
    }

    tr, err := gtk.ListBoxRowNew()
    if err != nil {
        panic(err)
    }

    fr.Add(tv)
    tr.Add(l)

    fr.SetVExpand(true)
    tr.SetVExpand(false)
    lb.Add(fr)
    lb.Add(sr)
    lb.Add(tr)

    lb.SetVExpand(true)

    // Add the label to the window.
    win.Add(lb)

    // Set the default window size.
    win.SetDefaultSize(800, 600)

    // Recursively show all widgets contained in this window.
    win.ShowAll()

    // Begin executing the GTK main loop.  This blocks until
    // gtk.MainQuit() is run.
    gtk.Main()
}

Так что мой вопрос, есть ли любая исчерпывающая информация о том, как GTK делает свою разметку и как заставить работать желаемую разметку.

1 Ответ

0 голосов
/ 13 февраля 2020

Похоже, что это невозможно с ListBox. Переключено на Box, и это работает как задумано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...