никогда раньше с таким поведением не сталкивался. Кьют версии 4.6.2
Создаю пустой class LabellerStatusBar: public QStatusBar
LabellerStatusBar::LabellerStatusBar( QWidget* pParent )
: QStatusBar( pParent )
{
Q_ASSERT( pParent != 0 );
m_pStatusLabel = new QLabel( tr(" "), this );
m_pStatusLabel->setAlignment( Qt::AlignHCenter );
m_pStatusLabel->setMinimumSize( m_pStatusLabel->sizeHint() );
m_pStatusLabel->setFrameShape( QFrame::StyledPanel );
m_pStatusExtLabel = new QLabel( this );
m_pStatusExtLabel->setIndent( 3 );
m_pStatusExtLabel->setFrameShape( QFrame::StyledPanel );
addWidget( m_pStatusLabel );
addWidget( m_pStatusExtLabel, 1 );
setSizeGripEnabled( true );
}
в родителе его использую:
Labeller::Labeller()
: QMainWindow()
{
m_pMenuBar = new LabellerMenuBar( this );
m_pStatusBar = new LabellerStatusBar( this );
m_pCentralWidget = new QScrollArea( this );
}
void Labeller::init( void )
{
setMouseTracking( true );
setMenuBar( m_pMenuBar );
setStatusBar( m_pStatusBar );
setCentralWidget( m_pCentralWidget );
QRect screenGeometry( QApplication::desktop()->screenGeometry( this ) );
setGeometry( screenGeometry.center().x(), screenGeometry.center().y(), scaledWindowWidth(), scaledWindowHeight() );
move( screenGeometry.center() - rect().center() - QPoint( 0, menuBar()->height() / 2 ) );
}
казалось бы - все очень просто. тем не менее, при ресайзе окна статус бар иногда исчезает. поведение одинаково и в Виндовс и в Линукс. при этом статус типы нормально отображаются в том месте, где должен быть нарисован статус бар. что я делаю не так? это бак Кьюта указанной версии? Если второе, то как это поправить? Использовать 4.8 или 5.1 версию я не могу к сожалению.