QGridLayout(parent),在構(gòu)建新網(wǎng)格布局時(shí)必須將其插入父布局。
你可以隨時(shí)添加子控件或布局到此布局中,但在將其插入父布局之前,整個(gè)布局都不會(huì)執(zhí)行。

QGridLayout 通過(guò)其父布局或 parentWidget() 獲取可用空間,將其劃分為行和列,并將其管理的每個(gè)窗口小部件放入正確的單元格中。
每列具有最小寬度和拉伸系數(shù)。最小寬度是使用 setColumnMinimumWidth() 設(shè)置的值與該列中所有控件的最小寬度之中的最大值。拉伸因子使用 setColumnStretch() 設(shè)置,并確定列將超過(guò)其必要最小值的可用空間量。
通常,使用 addWidget() 將每個(gè)托管控件或布局放入自己的單元格中。使用 addItem() 和addWidget() 的行和列跨越重載,窗口小部件也可能占用多個(gè)單元格。如果這做,QGridLayout將猜測(cè)如何在列/行上分配大小(基于拉伸因子)。
使用 removeWidget() 可以從布局中刪除控件?;蛘咴诳丶鲜褂?hide() 也可以有效地將其隱藏,直到使用 show()。

上圖中第 0、2 和 4 列均由一個(gè) QLabel、一個(gè) QLineEdit 和一個(gè) QListBox組成,第 1 列和第 3 列則是使用 setColumnMinimumWidth() 創(chuàng)建的占位符。第 0 行包含三個(gè) QLabel 對(duì)象,第 1 行包括三個(gè) QLineEdit 對(duì)象,第 2 行包括三個(gè) QListBox 對(duì)象。
請(qǐng)注意,上圖中列和行的寬高并不一定相同。如果希望兩列具有相同的寬度,則必須自己將最小寬度和拉伸系數(shù)設(shè)置為相同。您可以使用 setColumnMinimumWidth() 和 setColumnStretch() 執(zhí)行此操作。
如果 QGridLayout 不是頂級(jí)布局(即,不管理所有窗口小部件的區(qū)域和子窗口),則必須在在創(chuàng)建之后對(duì)其執(zhí)行任何操作之前,將其添加到其父布局。添加布局的常規(guī)方法是在父布局上調(diào)用 addLayout()。
QGridLayout還包括兩個(gè)邊距寬度:contentsMargins 和 spacing()。contentsMargins 是 QGridLayout 四邊的保留空間的寬度。spacing() 是相鄰框之間自動(dòng)分配的間距的寬度。
contentsMargins 默認(rèn)值由 style 提供,子控件默認(rèn)為 9,窗口為 11。spacing 默認(rèn)與頂級(jí)布局的 margin 寬度相同,或與父布局的相同。
QGridLayout.
addItem(item, row, column[, rowSpan=1[, columnSpan=1[, alignment=Qt.Alignment()]]])
指定行、列、跨行數(shù)、跨列數(shù)和對(duì)齊方式,將給定項(xiàng)目添加至布局中。
如果 rowSpan 和/或 columnSpan 為 -1,則項(xiàng)目將分別延伸到底部和/或右邊緣。不要使用此函數(shù)添加子布局或子控件項(xiàng)。請(qǐng)改用addLayout()或addWidget()。QGridLayout.
addLayout(arg__1, row, column[, alignment=Qt.Alignment()])
指定行、列和對(duì)齊方式,將給定布局添加至此布局中。
左上坐標(biāo)從 (0,0) 起始。默認(rèn)對(duì)齊方式為 0,這意味著子控件填充整個(gè)單元格。非零對(duì)齊表示布局不應(yīng)增長(zhǎng)以填充可用空間,但應(yīng)根據(jù)sizeHint()進(jìn)行調(diào)整。QGridLayout.
addLayout(arg__1, row, column, rowSpan, columnSpan[, alignment=Qt.Alignment()])
這是一個(gè)重載函數(shù)。指定行、列、跨行數(shù)、跨列數(shù)和對(duì)齊方式,將給定布局添加至布局中。如果 rowSpan 和/或 columnSpan 為 -1,則布局將分別延伸到底部和/或右邊緣QGridLayout.
addWidget(arg__1, row, column[, alignment=Qt.Alignment()])
指定行、列和對(duì)齊方式,將給定控件添加至此布局中。QGridLayout.
addWidget(arg__1, row, column, rowSpan, columnSpan[, alignment=Qt.Alignment()])
這是一個(gè)重載函數(shù)。指定行、列、跨行數(shù)、跨列數(shù)和對(duì)齊方式,將給定控件添加至布局中。如果 rowSpan 和/或 columnSpan 為 -1,則控件將分別延伸到底部和/或右邊緣QGridLayout.
cellRect(row, column)