0

Qtドキュメントの次のポイントをテストしています。

レイアウトを使用する場合、子ウィジェットを作成するときに親を渡す必要はありません。レイアウトは、レイアウトがインストールされているウィジェットの子になるように、(QWidget::setParent() を使用して) ウィジェットの親を自動的に変更します。

QDesigner を使用して、5 つの QPushButton と 1 つの QGroupbox を作成しました。次に、これらのボタンを QGridLayout に追加し、それをグループボックスのレイアウトとして設定します。

次に、グループボックスの子を確認しようとしました。しかし、5 ではなく 6 つの子が表示されます。1 つは空で、他はプッシュボタンです。

これが私のコードです。

QGridLayout *grd = new QGridLayout();
grd->addWidget(ui->pushButton,0,0);
grd->addWidget(ui->pushButton_2,0,1);
grd->addWidget(ui->pushButton_3,1,0,1,3);
grd->addWidget(ui->pushButton_4,2,0);
grd->addWidget(ui->pushButton_5,2,1);

ui->groupBox->setLayout(grd);

qDebug() << ui->groupBox->children().count();

foreach (QObject *button, ui->groupBox->children())
{
    qDebug() << "obj name" << button->objectName();
    QPushButton *push_button = qobject_cast<QPushButton *>(button) ;
    if(push_button)
    {
        qDebug() << push_button->text();
    }
}

私が得た結果。

6 
obj name "" 
obj name "pushButton" 
"button 1" 
obj name "pushButton_2" 
"button 2" 
obj name "pushButton_3" 
"button 3" 
obj name "pushButton_4" 
"button 4" 
obj name "pushButton_5" 
"button 5" 

children().count() が 5 ではなく 6 に等しい理由を誰でも教えてくれますか?

4

1 に答える 1