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 に等しい理由を誰でも教えてくれますか?