Название: QDialog + sizeHint = проблема
Отправлено: once_again_abc от Ноябрь 09, 2013, 15:01
LoadDialog::LoadDialog( const QString title, QWidget* pParent ) : QDialog( pParent, Qt::Dialog | Qt::Desktop ) { Q_ASSERT( pParent != 0 );
setWindowTitle( title );
m_pProgressMessage = new QLabel( this ); m_pProgressMessage->setText( tr("Loaded 9999999999999 items") ); m_pAbortButton = new QPushButton( tr("Abort"), this ); m_pAbortButton->setFixedSize( m_pAbortButton->sizeHint() ); m_pAbortButton->setDisabled( true ); m_pAbortButton->setVisible( false );
QVBoxLayout* pVLayout = new QVBoxLayout(); pVLayout->addWidget( m_pProgressMessage, 0, Qt::AlignCenter ); pVLayout->addWidget( m_pAbortButton, 0, Qt::AlignCenter );
setLayout( pVLayout );
QSize s1 = sizeHint(); QSize s2 = fontMetrics().size( Qt::TextSingleLine, windowTitle() );
setMinimumSize( s1 + s2 ); setFixedSize( s1 + s2 );
connect( m_pAbortButton, SIGNAL(clicked()), this, SLOT(close()), Qt::DirectConnection ); }
объясните мне пожалуйста, почему первый раз показывается диалог с пустым виджетом (диалог состоит только из заголовока окна и рамки), а все последующие разы - нормальный размер и при этом s1 и s2 правильные (осмысленные)?!
Название: Re: QDialog + sizeHint = проблема
Отправлено: once_again_abc от Ноябрь 11, 2013, 00:05
полечилось добавлением pVLayout->setSizeConstraint( QLayout::SetMinimumSize );
перед вызовом в конструкторе. Но для меня так и остается загадкой, почему первый раз виджет не отображался нормально.
|