2017-11-04 21 views
1

고급 기능을 위해 승격 된 QLabel에서 상속 된 사용자 정의 위젯이 있습니다. 최소 크기 (너비 및 높이)가 qt 디자이너에서 150으로 설정됩니다. ui->thatWidget->minimumSize().width(); // 150를 호출하지만, MainWindow를 생성자에서 올바른 값을 반환qt minimumSize()는 0을 반환하지만 qt 디자이너에서는 0이 아닌 값으로 설정됩니다.

InventoryItem::InventoryItem(QWidget* parent): QLabel(parent) 
{ 
    qDebug() << minimumSize().width(); // 0 ??? 
    qDebug() << minimumSize().height(); // 0 ??? 
} 

어떤 이유로

그러나 사용자 정의 위젯의 생성자 minimumSize.width(), minimumSize().height()에 대한 호출이 반환 0 (150, 150) , ... 높이와 같음

또한 위젯의 세로 및 가로 레이아웃이 메인 윈도우에 있습니다.

저는 QT의 GUI 프로그래밍에 익숙하지 않습니다.

무슨 일입니까?

맞춤 위젯에서 올바른 값을 얻는 방법 ??

답변

1

주 창의 생성자는 다음 줄로 시작됩니다. ui->setup(this);. 이것은 메인 윈도우에 대해 moc 파일이 자동으로 생성 된 setup() 함수에 대한 호출입니다. 이 함수는 인벤토리 항목을 만들고 THEN은 최소 크기를 설정합니다. 보고있는 것은 믿기 때문에 프로젝트가 구축 된 폴더에있는 moc 파일을 살펴보십시오. 따라서 나중에 주 윈도우의 생성자에서 ui->thatWidget->minimumSize().width();을 호출하면 예상되는 최소 너비 인 150이보고됩니다. InventoryItem 건설 당시, 최소 크기는 아직 설정되지 않았으므로 생성자에 qDebug() << minimumSize().width();을 호출하면 최소 너비의 기본값이보고됩니다. 최소 크기의 documentation에는 QWidget 상태 : 기본적으로

,이 건물은 제로 폭과 높이와 크기가 포함되어 있습니다.

간략히 말하자면 세계는 여전히 기능합니다. 즉, 관찰되는 동작이 예상 한 것입니다.