나는이 축척에 대한 답변을 사용하여 자동으로 올바르게 축척되는 커스텀 이미지 위젯을 만들었다. SO question 그것은 잘 작동하지만 지금은 이미지 위젯 인스턴스를 내 메인 윈도우의 중앙에 놓으려고합니다.동적 레이아웃에서 위젯을 센터링 하시겠습니까?
내 아이디어는 QHBoxLayout
을 만들고 이미지 위젯을 추가 한 다음 hBox 인스턴스를 ui-> verticalLayout에 추가하는 것이 었습니다.
작동하지 않습니다. 이미지가 여전히 오류 메시지와 함께 플러시 왼쪽을 표시 가 QLayout가 : QLayout "를 추가하려고하면 이미 이미지 다음 그때 setAlignment` '에 몇 가지 변화를 시도
레이아웃 그러나이있다 MainWindow를"을 "MainWindow를 위해" 전혀 나타나지 않습니다. 내 간단한 테스트 코드는 아래와 같습니다.
무엇이 여기에 있습니까?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QPixmap pix;
pix.load("/Users/home/Desktop/test.jpg");
ImageLabel2* image = new ImageLabel2(this);
image->setPixmap(pix);
QHBoxLayout* hbox = new QHBoxLayout(this);
hbox->addWidget(image);
// hbox->setAlignment(image,Qt::AlignCenter);
hbox->setAlignment(Qt::AlignHCenter);
// ui->verticalLayout->addLayout(hbox);
ui->verticalLayout->addLayout(hbox);
// ui->verticalLayout->addWidget(image);
// ui->verticalLayout->setAlignment(image,Qt::AlignCenter);
// ui->verticalLayout->setAlignment(Qt::AlignHCenter);
}
당신이 생성자에서 부모를 통과 할 필요가 없습니다, QHBoxLayout이 * hbox에 = ImageLabel2에 같은 새로운 QHBoxLayout(); * 이미지 = 새로운 ImageLabel2 (); addLayout 또는 addWidget을 호출하면 소유권이 레이아웃으로 전달되기 때문입니다. – Kunal
@Kunal - 감사합니다. 네, 조금 더 읽고 소유권에 대해 더 잘 이해합니다. 그래도 센터를 작동 시키려고 노력하고 있습니다. –
당신은 setStretch()를 시험해 볼 필요가 있을지 모르지만, 확실하지 않습니다. – Kunal