Russian Qt Forum

Qt => Вопросы новичков => Тема начата: once_again_abc от Июнь 27, 2012, 09:59



Название: QTabBar::removeTab странно работает
Отправлено: once_again_abc от Июнь 27, 2012, 09:59
есть три таба с индексами 0, 1 и 2
удаляю таб 1, вместе с ним удаляется таб 2 (QTabBar::count() == 1)

это нормальное поведение? в документации ничего об этом найти не смог.
если это нормальное поведение, то как предотвратить его? изобретать свой велосипед?


Название: Re: QTabBar::removeTab странно работает
Отправлено: mutineer от Июнь 27, 2012, 10:32
Напиши, хотя бы, как таб удаляешь


Название: Re: QTabBar::removeTab странно работает
Отправлено: once_again_abc от Июнь 27, 2012, 10:42
в своем классе-наследнике от QTabBar вызвается обработчик mouseDoubleClickEvent, в котором делаю следующее:

Код:
if( tabText(currentIndex()) == "Data 1" ) {
        removeTab( currentIndex() );
        emit CloseTab( "Data 1" );
}

при этом закрывается и следующий за ним таб "Data 2", а фнкция QTabBar::count() возвращает 1, т.е. только самый первый (нулевой) таб на месте.

сигнал CloseTab вызывает слот со следующим кодом:

Код:
    if( tab_name == "Data 1" ) {
        m_pDataPlotter1->setParent( NULL );
        m_pDataPlotter1->show();
    }

где m_pDataPlotter1 наследник QWidget - т.е. попросту делаю мой виджет отдельным самостоятельным окном. впрочем, вызов этого слота не влияет на ситуацию, проверял комментированием 
Код:
emit CloseTab( "Data 1" );



Название: Re: QTabBar::removeTab странно работает
Отправлено: once_again_abc от Июль 02, 2012, 10:50
судя по молчанию, такое поведение только у меня =)


Название: Re: QTabBar::removeTab странно работает
Отправлено: Alex Custov от Июль 02, 2012, 10:52
выдели свой таббар в отдельный компилируемый проект и скинь сюда


Название: Re: QTabBar::removeTab странно работает
Отправлено: once_again_abc от Июль 09, 2012, 06:03
поднял шум почем зря...
все работает как надо, баг был у меня. сегодня дошли руки до этой функциональности - на свежую голову сразу увидел грабли =) очень стыдно, прошу прощения за всю эту суету!