Привет всем! У многих начинающих разработчиков, которые задумали создавать интерфейс своего очередного шедевра в Glade часто возникают трудности с конструированием различного рода списков. У меня тоже были похожие затруднения. Я решил написать данный пост, надеясь, что он поможет новичкам разобраться с созданием упомянутых элементов. Постараюсь разъяснить все максимально подробно.
TreeView
Итак, допустим, нам нужно получить что-то вроде этого:
Самое первое, что нужно сделать это открыть Glade и создать новое окно GtkWindow из вкладки окон. Далее, из соседней вкладки контейнеров выбираем GtkScrolledWindow и перемещаем на созданное окно. Должно получится вот так:
Далее, из вкладки Display перемещаем на окно так нужный нам TreeView. После перемещения справа от формы нужно найти и заполнить поле "модель TreeView":
Нажимаем на значок карандаша и видим окно:
В этом окне нужно нажать кнопку "Создать". Окно сразу закроется, а в поле модели появится надпись liststore1. После всех манипуляций в левой панели должна отображаться вот такая иерархия:
Выделяем пункт liststore1 и в правой части обращаем внимание на следующую таблицу:
Нам нужно ее заполнить. Для заполнения надо нажать на выделенную строку и выбрать в появившемся выпадающем списке необходимое значение типа столбца и дописать его название. Я сделал так:
Ниже этой таблицы есть еще одна, в которой нужно создать строки:
Я заполнил ее таким образом:
Что дальше? А дальше нам надо вызвать редактор дерева, чтобы связать полученный liststore с элементами списка. Чтобы появился редактор нужно в левой панели кликнуть правой кнопкой мыши на элементе GtkTreeView или сделать то же самое в области формы. В появившемся меню нажимаем "Edit". Должно показаться такое окно:
Нажимаем на плюс в левой части и видим примерно следующее:
Заполняем поле ID (по желанию) и дальше нажимаем правой кнопкой мыши по выделенному элементу в левой части. В появившемся меню выбираем добавление дочернего элемента "Текст" и переходим уже к нему:
Здесь очень важно в разделе параметров и атрибутов выбрать нужный нам элемент из liststore. По умолчанию там выставлено значение "не определено". Нажав на выпадающий список, выбираем "name-gchararray". Таким образом мы создали первый столбец. Для создания второго столбца нажимаем снова на плюс в левой части и повторяем все то же самое, но с другими параметрами. Для второго столбца должно получиться так:
А для третьего вот так:
После всех действий иерархия компонентов в левой панели редактора должна выглядеть таким образом:
Еще нужно переименовать столбцы, так как по умолчанию они выводятся как "column". Для переименования выделите нужный столбец в левой панели, например, column_name, а в правой части найдите это:
Вместо значения по умолчанию впишите значение "Имя". И так проделайте со всеми столбцами. Теперь можно запустить предварительный просмотр того, что мы тут наворотили. Нажмите на значок с шестеренками вверху (появляется при выделении какого-либо виджета в форме) и полюбуйтесь на свое творение. Должно получиться так же, как на самой первой картинке.
ComboBox
Для выпадающих списков логика создания примерно такая же, поэтому подробно расписывать весь процесс я не буду. Вот пример редактора выпадающего списка и как видно, слева выделен только один элемент:
В параметрах и атрибутах указан name-gchararray из list_store. Вот содержимое list_store:
По такому же типу можно создать и TreeView если вам нужен обычный список без нескольких столбцов. Разница в том, что для TreeView в редакторе дерева создается родитель GtkTreeViewColumn и его дочерний элемент GtkCellRendererText, а для выпадающего списка только GtkCellRendererText.
На этом все! Надеюсь, что понятно объяснил и помог новичкам разобраться в данной теме.