【PyQt】網(wǎng)格布局 QGridLayout

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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容