我正在使用此SO question的答案來製作自動縮放正確的自定義圖像小部件。它工作正常,但現在我試圖將圖像小部件實例居中在我的主窗口的中心。將動態佈局中的小部件居中?
我的想法是創建一個QHBoxLayout
,添加圖像小部件,然後將hBox實例添加到ui-> verticalLayout。
不起作用。圖像仍顯示左對齊,並顯示錯誤消息:QLayout:嘗試添加QLayout「」到主窗口「主窗口」,它已經具備了佈局
我又試圖在「setAlignment`有一些變化,但隨後的圖像根本沒有出現。我的簡單測試代碼如下。
我在這裏錯過了什麼?
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,負責*橫向盒=新QHBoxLayout,負責();同樣,以ImageLabel2 *圖像=新ImageLabel2( );因爲當您調用addLayout或addWidget時,所有權將轉移到佈局。 – Kunal
@Kunal - 謝謝。是的,我讀了更多,更好地理解了所有權。仍然試圖讓中心對齊工作。 –
可能你需要嘗試setStretch(),我不確定 – Kunal