crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Разворачивающиеся панели, как в 3ds Max(скрин прилагаеццо :) )
0xF
  опции профиля:
сообщение 17.3.2008, 14:44
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Как замутить вот такие панели на Qt(Object Type, Name and Color etc.)?
Прикрепленное изображение


Там есть похожий контрол(QToolBox), но он показывает только одну развернутую страницу(как только открываешь одну - закрывается другая), а мне нужно шо можно было одновременно несколько открывать.

Как замутить? Может есть готовое решение?

Сообщение отредактировал 0xF - 17.3.2008, 14:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
0xF
  опции профиля:
сообщение 20.3.2008, 16:57
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 71
Регистрация: 12.11.2007
Пользователь №: 20

Спасибо сказали: 0 раз(а)




Репутация:   0  


Так, новая запарка возникла :)
Вот код, добавляющий страницу в мой контрол:
void QFoldout::AddPage( const std::string& caption, QGroupBox *group )
{
    QPushButton *button = new QPushButton( caption.c_str(), this );

    connect( button, SIGNAL( clicked(bool) ), this, SLOT( OnCategoryButtonClicked(bool) ) );

    button->setCheckable( true );
    button->setChecked( true );
    button->setVisible( true );
    group->setVisible( true );
    group->setParent( this );

    categoryMap[ button ] = group;
    buttonMap[ caption ] = button;

    Layout();
}


И ф-ция Layout для расстановки страниц в нужном порядке:
void QFoldout::Layout( void )
{
    tCategoryMapIter end = categoryMap.end();

    int w = width();
    int yOffset = 0;

    const int k_ButtonHeight = 22;
    const int k_ButtonOffset = 0;

    for( tCategoryMapIter i = categoryMap.begin(); i != end; i++ ) {
        QPushButton *button = i->first;
        QGroupBox   *group    = i->second;

        button->setGeometry( k_ButtonOffset, yOffset, w - k_ButtonOffset * 2, k_ButtonHeight );
        group->setGeometry( 0, yOffset + k_ButtonHeight, w, group->height() );

        if( button->isVisible() ) yOffset += k_ButtonHeight; // ** Вот тут собственно запарка, isVisible возвращает false
        if( group->isVisible() ) yOffset += group->height(); // ** для QPushButton и для QGroupBox :(
    }

    resize( QSize( w, yOffset ) );
}


Прошелся дебагером по коду: сразу же после вставки страницы вызывается ф-ция Layout(см. код), но метод isVisible почему-то возвращает false, хотя я вызвал в коде вставки страницы button->setVisible( true ) и group->setVisible( true )

Почему isVisible возвращает false? О_о
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 0xF   Разворачивающиеся панели   17.3.2008, 14:44
- - Litkevich Yuriy   помоему, QToolBox не подойдет, надо на основе дере...   17.3.2008, 15:02
- - 0xF   Та вот плохо, что не подойдет... Допустим сделаю я...   17.3.2008, 15:36
- - Litkevich Yuriy   есть два рианта: 1 создать модуль для дизайнера, н...   17.3.2008, 15:45
- - 0xF   Ага, спс А как вобще этот контрол называется? Тот...   17.3.2008, 19:26
- - Litkevich Yuriy   не знаю, может у них самописаный   17.3.2008, 19:29
- - 0xF   А где-нить в сети можно скачать виджеты для Qt? Мо...   17.3.2008, 19:48
- - trdm   http://www.crossplatform.ru/?q=taxonomy/term/65 ht...   17.3.2008, 19:55
- - Litkevich Yuriy   http://www.qt-apps.org/ http://www.qt-prop.org на ...   17.3.2008, 19:57
- - 0xF   Вот, кое-что нашел, индус накодил http://www.vcre...   17.3.2008, 20:11
- - Litkevich Yuriy   да очень похоже на твой скриншот, одна беда портир...   17.3.2008, 20:19
- - 0xF   Решил сделать по-своему. В QVBoxLayout толкаю пара...   17.3.2008, 21:57
- - Litkevich Yuriy   ну ясен перец на то он и Layout, попробуя задавать...   17.3.2008, 22:03
- - 0xF   Блин, ну и гемор с этим лейаутом... Ладно, пока за...   17.3.2008, 22:31
- - Litkevich Yuriy   попробую угадать с закрытыми глазами: foldOut в La...   17.3.2008, 22:38
- - Litkevich Yuriy   QFoldout это твой класс, от QWidget? тогда тебе н...   17.3.2008, 22:41
- - 0xF   Да, QFoldout - мой класс от QWidget, QVBoxLayout я...   17.3.2008, 22:52
- - 0xF   О, после добавки QFoldout::sizeHint можно хотя бы ...   17.3.2008, 22:58
- - Litkevich Yuriy   пример от Макса Шлее: main.cpp: CODE #include ...   17.3.2008, 23:02
- - 0xF   .   18.3.2008, 0:17
- - 0xF   Так, новая запарка возникла Вот код, добавляющий ...   20.3.2008, 16:57
- - 0xF   Думал, может у меня в коде какая-нить ошибка, напи...   20.3.2008, 21:09
- - Litkevich Yuriy   а кнопку видно?   20.3.2008, 21:25
- - 0xF   Так, решил проблему переопределением QWidget::show...   20.3.2008, 21:25
- - 0xF   Цитатаа кнопку видно? Нет, она не появлялась... т....   20.3.2008, 21:26
- - Litkevich Yuriy   обычно даже и не надо делать setVisible, уже видно...   20.3.2008, 21:29
- - 0xF   А хз. Не думаю Почитал щас доки, написано, что ес...   20.3.2008, 22:00
- - Litkevich Yuriy   запросто, т.к. родитель - контейнер.   20.3.2008, 22:58


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


14 чел. читают эту тему (гостей: 14, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 7.1.2025, 18:01