День добрый,
Я недавно начал изучать C/C++ и программирование GTK. Вот возник вопрос - как добавить (вертикальный) scrollbar к дереву для прокрутки? Пробовал scrollwindow, но для меня это не подходит.
Спасибо!
GTK - как добавить scrollbar к дереву?
Модератор: Модераторы разделов
-
mr_smith
- Сообщения: 24
- ОС: Gentoo
GTK - как добавить scrollbar к дереву?
AMD64 X2 3600+, 2GB RAM, Asus M2N-MX, 250Gb HDD, nvidia GeForce 7600 GT 256 MB, DVD-RW.
-
halturin
- Сообщения: 167
- ОС: Linux
Re: GTK - как добавить scrollbar к дереву?
Скролл в гтк это контейнер, просто создай его, потом упакуй в него свой виджет.
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: GTK - как добавить scrollbar к дереву?
GtkHScrollbar, GtkVScrollbar - не контейнер.
GtkScrolledWindow - упакуй в него свой виджет.
Если нужен только вертикальный скроллинг, отключи через свойства горизонтальный http://library.gnome.org/devel/gtk/stable/...ndow.properties.
GtkScrolledWindow - упакуй в него свой виджет.
Если нужен только вертикальный скроллинг, отключи через свойства горизонтальный http://library.gnome.org/devel/gtk/stable/...ndow.properties.
все сказанное есть имхо...
-
mr_smith
- Сообщения: 24
- ОС: Gentoo
Re: GTK - как добавить scrollbar к дереву?
d_n_k писал(а): ↑01.07.2008 16:36GtkHScrollbar, GtkVScrollbar - не контейнер.
GtkScrolledWindow - упакуй в него свой виджет.
Если нужен только вертикальный скроллинг, отключи через свойства горизонтальный http://library.gnome.org/devel/gtk/stable/...ndow.properties.
Спасибо за советы, но вот в чем дело - у меня в упаковке ДВА дерева, и нужно что бы они выглядели как одно.Если у меня все это дело находится в одном scrolledwindow, все замечательно если бы только заголовки столбцов не пропадали бы при прокрутке вниз. Это происходит потому что scrolledwindow прокручивает сам КОНТЕЙНЕР, а не деревья которые находятся внутри его. Если только одно дерево находится внутри scrolledwindow, тогда заголовки остаются...
У меня получилось прокручивать дерево с помощью scrollbar, и алгоритм вычисления page_size тоже не проблема написать, но дело в том что если, например, добавить 50 строк в дерево, то окно растянется вертикально чтоб вместить все это дело!!! Куда можно упаковать это дерево (ну или любой другой виджет) где это дело не растягивалось бы что бы все вместить? Тогда можно было бы просто добавить scrollbar и дело в шляпе!
Спасибо всем за помощь!!
AMD64 X2 3600+, 2GB RAM, Asus M2N-MX, 250Gb HDD, nvidia GeForce 7600 GT 256 MB, DVD-RW.
-
halturin
- Сообщения: 167
- ОС: Linux
Re: GTK - как добавить scrollbar к дереву?
GtkHScrollbar, GtkVScrollbar - не контейнер.
GtkScrolledWindow - упакуй в него свой виджет.
Угу, именно GtkScrolledWindow и имел ввиду.
2mr_smith: думаю у тебя какая-то конструктивная "ошибка". Ты собираешься двигать одним скроллом два дерева?
-
mr_smith
- Сообщения: 24
- ОС: Gentoo
Re: GTK - как добавить scrollbar к дереву?
Да, я собираюсь. Это вполне возможноб так как если создать один Gtk::Adjustment и впихнуть его во все деревья, то они будут премещатся одинакого. Можно создать и один scrollbar с этим же Gtk::Adjustment и тогда он будет перемещать два дерева. Но вот проблема в том что деревья "растягиваются" что бы вместить все данные.
Надо будет взглянуть в код scrolledwindow. А так есть какие нибудь предложения? Спасибо!
AMD64 X2 3600+, 2GB RAM, Asus M2N-MX, 250Gb HDD, nvidia GeForce 7600 GT 256 MB, DVD-RW.
-
halturin
- Сообщения: 167
- ОС: Linux
Re: GTK - как добавить scrollbar к дереву?
у меня единственное предложение - пересмотреть конструктивную составляющую, есть стойкое убеждение, что после реализации сего, спустя некоторое время, это код депрекейтнется ввиду как раз таки неюзабельности. хотя... надеюсь я ошибаюсь.
а что за такая задача хитрая? можно узнать если не секрет
?
а что за такая задача хитрая? можно узнать если не секрет
-
mr_smith
- Сообщения: 24
- ОС: Gentoo
Re: GTK - как добавить scrollbar к дереву?
halturin писал(а): ↑03.07.2008 14:30у меня единственное предложение - пересмотреть конструктивную составляющую, есть стойкое убеждение, что после реализации сего, спустя некоторое время, это код депрекейтнется ввиду как раз таки неюзабельности. хотя... надеюсь я ошибаюсь.
а что за такая задача хитрая? можно узнать если не секрет?
Задача такая - хочу сделать прогу которая показывала бы альбомы как Windows Media Player 11 - т.е. слева картинка альбома, а справа список песен входящих в альбом. Ну очень нравится эта фишка!
AMD64 X2 3600+, 2GB RAM, Asus M2N-MX, 250Gb HDD, nvidia GeForce 7600 GT 256 MB, DVD-RW.
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: GTK - как добавить scrollbar к дереву?
если ты хочешь чтобы было так
http://www.winsupersite.com/images/reviews...11_final_20.jpg
то для этого нужено:
Виджеты
GtkTreeView - для иерахчического дерева, при смене текущего элемента, меняется содержимое listView (источник данных) или само listView (другой объект) - 1 штука
GtkListView - 1 штука (у него есть свой скроллинг)
в него добавляются колонки с:
-наследник от GtkCellRenderer для отображения картинки альбома + некоторый текст - 1 штука (понадобится сложное объединение строк)
-GtkTextRenderer для отображения списка
-всякие звездочик рисуются через наследник от GtkCellRenderer (GtkCellRendererPixbuf)
для отображения времени лучше написать CellRendererTime, тк можно скармливать сразу время, а не форматированую строку
Несколько контейнеров
http://www.winsupersite.com/images/reviews...11_final_20.jpg
то для этого нужено:
Виджеты
GtkTreeView - для иерахчического дерева, при смене текущего элемента, меняется содержимое listView (источник данных) или само listView (другой объект) - 1 штука
GtkListView - 1 штука (у него есть свой скроллинг)
в него добавляются колонки с:
-наследник от GtkCellRenderer для отображения картинки альбома + некоторый текст - 1 штука (понадобится сложное объединение строк)
-GtkTextRenderer для отображения списка
-всякие звездочик рисуются через наследник от GtkCellRenderer (GtkCellRendererPixbuf)
для отображения времени лучше написать CellRendererTime, тк можно скармливать сразу время, а не форматированую строку
Несколько контейнеров
все сказанное есть имхо...
-
mr_smith
- Сообщения: 24
- ОС: Gentoo
Re: GTK - как добавить scrollbar к дереву?
d_n_k писал(а): ↑04.07.2008 17:01если ты хочешь чтобы было так
http://www.winsupersite.com/images/reviews...11_final_20.jpg
то для этого нужено:
Виджеты
GtkTreeView - для иерахчического дерева, при смене текущего элемента, меняется содержимое listView (источник данных) или само listView (другой объект) - 1 штука
GtkListView - 1 штука (у него есть свой скроллинг)
в него добавляются колонки с:
-наследник от GtkCellRenderer для отображения картинки альбома + некоторый текст - 1 штука (понадобится сложное объединение строк)
-GtkTextRenderer для отображения списка
-всякие звездочик рисуются через наследник от GtkCellRenderer (GtkCellRendererPixbuf)
для отображения времени лучше написать CellRendererTime, тк можно скармливать сразу время, а не форматированую строку
Несколько контейнеров
Спасибо за совет, это почти как я и сделал!

При прокрутке вниз изчезают заголовки деревьев.
Вот что бы мне хотелось так это использовать один Scrollbar для прокрутки этих двух деревьев. Это я уже решил, ОДНАКО - когда добавляю например там 30 - 40 строк, всё окно растягивается что бы вместить все это. Пробовал упаковать в viewport, но без результатов.
Надо будет копаться в коде scrollwindow и написать что то подобное, но только без scrollbars.
AMD64 X2 3600+, 2GB RAM, Asus M2N-MX, 250Gb HDD, nvidia GeForce 7600 GT 256 MB, DVD-RW.
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux
Re: GTK - как добавить scrollbar к дереву?
выкинь нафик это GtkScrolledWindow. он тебе не нужен у TreeView есть свой скроллбар
все сказанное есть имхо...
-
halturin
- Сообщения: 167
- ОС: Linux
-
mr_smith
- Сообщения: 24
- ОС: Gentoo
Re: GTK - как добавить scrollbar к дереву?
Как есть? Если treeview впихнуть в box, а потом добавить туда, скажем 50 рядов, то окно растянется что бы вместить всё это и никакие scrollbar не появятся. Вот почему нужен scrolledwindow, который расчитывает все это за нас. А в treeview есть просто поддержка скроллинга, которой собственно, и пользуется scrolledwindow.
AMD64 X2 3600+, 2GB RAM, Asus M2N-MX, 250Gb HDD, nvidia GeForce 7600 GT 256 MB, DVD-RW.