Russian Qt Forum
Ноябрь 26, 2024, 18:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QDialog + sizeHint = проблема  (Прочитано 1795 раз)
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 правильные (осмысленные)?!
Записан
once_again_abc
Гость
« Ответ #1 : Ноябрь 11, 2013, 00:05 »

полечилось добавлением

Код:
pVLayout->setSizeConstraint( QLayout::SetMinimumSize );

перед вызовом

Код:
setLayout( pVLayout );

в конструкторе.

Но для меня так и остается загадкой, почему первый раз виджет не отображался нормально.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.207 секунд. Запросов: 20.