解决方案 You can set the size policy of the widget that is displayed to QSizePolicy::Preferred and the other ones to QSizePolicy::Ignored. =index) ui->tabWidget->widget(i)->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); ui->tabWidget ->widget(index)->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); ui->tabWidget->widget
QSizePolicy::Policy 枚举值有如下几个: Constants Description QSizePolicy::Fixed widget 的实际尺寸只参考 sizeHint () 的返回值,不能伸展(grow)和收缩(shrink) QSizePolicy::Minimum 可以伸展和收缩,不过sizeHint() 的返回值规定了 widget 能缩小到的最小尺寸 QSizePolicy ::Preferred, QSizePolicy::Preferred); 6: button2->setSizePolicy(QSizePolicy::Preferred, QSizePolicy ::Preferred, QSizePolicy::Preferred); 6: button2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy ::Minimum, QSizePolicy::Maximum, QSizePolicy::MinimumExpanding, QSizePolicy::Ignored 就比较好理解了吧
txtIP1->setObjectName("txtIP1"); txtIP1->setAlignment(Qt::AlignCenter); txtIP1->setSizePolicy(QSizePolicy ::Expanding, QSizePolicy::Expanding); connect(txtIP1, SIGNAL(textChanged(QString)), this, SLOT(textChanged ::Expanding, QSizePolicy::Expanding); connect(txtIP2, SIGNAL(textChanged(QString)), this, SLOT(textChanged ::Expanding, QSizePolicy::Expanding); connect(txtIP3, SIGNAL(textChanged(QString)), this, SLOT(textChanged ::Expanding, QSizePolicy::Expanding); connect(txtIP4, SIGNAL(textChanged(QString)), this, SLOT(textChanged
::Expanding, QSizePolicy::Expanding); button2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy: :Expanding); button3->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); button4- >setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); button5->setSizePolicy(QSizePolicy ::Expanding, QSizePolicy::Expanding); button6->setSizePolicy(QSizePolicy::Expanding, QSizePolicy: 常用尺寸策略: QSizePolicy::Fixed:固定大小,不拉伸; QSizePolicy::Expanding:拉伸填充多余空间; QSizePolicy::Minimum:最小尺寸
::Expanding,QSizePolicy::Expanding); btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding ); btn3.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); btn4.setSizePolicy(QSizePolicy ::Expanding,QSizePolicy::Expanding); btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding ::Expanding,QSizePolicy::Expanding); btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding ::Expanding,QSizePolicy::Expanding); btn5.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding
PySide6.QtGui import QBrush, QPainter, QPaintEvent from PySide6.QtWidgets import QApplication, QDial, QSizePolicy 但没有最小或最大限制 # Ignored # 0xd 控件的大小策略被忽略,布局管理器不会考虑这个控件的大小 self.setSizePolicy(QSizePolicy.Policy.Preferred , QSizePolicy.Policy.Preferred) # self.setSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.MinimumExpanding import QBrush, QFont, QPainter, QPaintEvent from PySide6.QtWidgets import QApplication, QDial, QLabel, QSizePolicy , QSizePolicy.Policy.Preferred) # self.setSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.MinimumExpanding
QPushButton *btnIcon = new QPushButton(widgetTop); btnIcon->setObjectName("btnIcon"); QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); sizePolicy.setHorizontalStretch(0); ::Expanding, QSizePolicy::Minimum); layoutTop->addItem(horizontalSpacer); QPushButton *btnClose sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Expanding); sizePolicy1.setHorizontalStretch(0) sizePolicy2(QSizePolicy::Expanding, QSizePolicy::Preferred); sizePolicy2.setHorizontalStretch(0)
可选的值如下: QSizePolicy::Ignored : 忽略控件的尺⼨,不对布局产⽣影响 QSizePolicy::Minimum : 控件的最⼩尺⼨为固定值,布局时不会超过该值。 QSizePolicy::Maximum : 控件的最⼤尺⼨为固定值,布局时不会⼩于该值。 QSizePolicy::Preferred : 控件的理想尺⼨为固定值,布局时会尽量接近该值。 ::Expanding, QSizePolicy::Expanding); button2->setSizePolicy(QSizePolicy::Expanding, QSizePolicy ::Expanding); button3->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); (QSizePolicy::Expanding, QSizePolicy::Expanding); button6->setSizePolicy(QSizePolicy::Expanding
txtIP1->setObjectName("txtIP1"); txtIP1->setAlignment(Qt::AlignCenter); txtIP1->setSizePolicy(QSizePolicy ::Expanding, QSizePolicy::Expanding); connect(txtIP1, SIGNAL(textChanged(QString)), this, SLOT(textChanged ::Expanding, QSizePolicy::Expanding); connect(txtIP2, SIGNAL(textChanged(QString)), this, SLOT(textChanged ::Expanding, QSizePolicy::Expanding); connect(txtIP3, SIGNAL(textChanged(QString)), this, SLOT(textChanged ::Expanding, QSizePolicy::Expanding); connect(txtIP4, SIGNAL(textChanged(QString)), this, SLOT(textChanged
, QSizePolicy.PushButton, Qt.Horizontal) space_y += wid.style().layoutSpacing( QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Vertical) next_x = x + item.sizeHint( import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import ( QApplication, QLayout, QPushButton, QSizePolicy , QSizePolicy.Minimum)) def count(self): return len(self. QSizePolicy.PushButton, QSizePolicy.PushButton, Qt.Vertical) next_x = x + item.sizeHint(
设置菜单按键的最大高度 void setMenuMaxHeight(int maxh); //用于设置按键属性,固定大小/缩放 void setMenuBtnSizePolicy(QSizePolicy <QToolButton*>m_btnMap; //用于保存菜单按键 QMap<QString, QWidget*>m_widgetsMap; //用于保存菜单对应的界面 QSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed); m_btnQSizePolicy = QSizePolicy(QSizePolicy::Expanding , QSizePolicy::Expanding); } CBaseConfig::~CBaseConfig() { delete ui; } void CBaseConfig::setMenuMiniHeight int maxw) { ui->widgetSetMenu->setMaximumWidth(maxw); } void CBaseConfig::setMenuBtnSizePolicy(QSizePolicy
需要把按钮的垂直方向的 sizePolicy 属性设置为 QSizePolicy::Expanding 尽可能填充满布局管理器,才能看到效果。 QSizePolicy::Minimum:控件的最小尺寸为固定值,布局时不会超过该值。 QSizePolicy::Maximum:控件的最大尺寸为固定值,布局时不会小于该值。 QSizePolicy::Preferred:控件的理想尺寸为固定值,布局时会尽量接近该值。 QSizePolicy::Expanding:控件的尺寸可以根据空间调整,尽可能占据更多空间。 - QSizePolicy::Minimum: 控件的最小尺寸为固定值,布局时不会超过该值。QSizePolicy::Maximum: 控件的最大尺寸为固定值,布局时不会小于该值。 QSizePolicy::Preferred: 控件的理想尺寸为固定值,布局时会尽量接近该值。QSizePolicy::Expanding: 控件的尺寸可以根据空间调整,尽可能占据更多空间。
NULL则不显示 5、Spacer 属性 说明 width 宽度 height 高度 hData 水平方向的SizePolicy选项 vData 垂直方向的SizePolicy选项 选项有如下几种: QSizePolicy ::Ignored :忽略控件尺寸,不对布局产生影响 QSizePolicy::Minimum : 控件的最小尺寸固定,布局时不会小于该值 QSizePolicy::Maximum : 控件的最小尺寸固定 ,布局时不会大于该值 QSizePolicy::Preferred : 控件的理想尺寸固定,布局时往这个值靠近 QSizePolicy::Expanding :控件的尺寸可以根据空间调整,尽可能的多占据空间 QSizePolicy::Shrinking : 控件的尺寸可以根据空间调整,尽可能的少占据空间 今日分享就到这里了~
self.horizontalLayout_2) self.clientListView = QtGui.QListView(self.layoutWidget) sizePolicy = QtGui.QSizePolicy (QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) , QtGui.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem) self.addButton , QtGui.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem1) self.horizontalLayout , QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem2) self.revertButton
self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) spacerItem = QtGui.QSpacerItem(20, 98, QtGui.QSizePolicy.Minimum , QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.lHello = QtGui.QLabel(Form self.verticalLayout.addWidget(self.pbHello) spacerItem1 = QtGui.QSpacerItem(20, 98, QtGui.QSizePolicy.Minimum , QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem1) self.retranslateUi(Form)
sys 10 from PyQt5.QtWidgets import QApplication,QWidget,QFontDialog,QLabel,QVBoxLayout,QPushButton,QSizePolicy QVBoxLayout() 19 20 btn = QPushButton('Diaglog',self) 21 btn.setSizePolicy(QSizePolicy.Fixed ,QSizePolicy.Fixed) 22 btn.move(20,20) 23 btn.clicked.connect(self.showdiaglog) 24
self.imageLabel.setBackgroundRole(QtGui.QPalette.Dark) self.imageLabel.setSizePolicy(QtWidgets.QSizePolicy.Ignored ,QtWidgets.QSizePolicy.Ignored) #self.imageLabel.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) self.imageLabel.setScaledContents(True) self.scrollArea
self.pushButton_img = QtWidgets.QPushButton(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy (QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.MinimumExpanding) sizePolicy.setHorizontalStretch (QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch (QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch (QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch
::Ignored, QSizePolicy::MinimumExpanding)); // 添加空隙 auto outerHorizontalLayout = new QHBoxLayout ; // 创建水平布局 outerHorizontalLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::MinimumExpanding , QSizePolicy::Ignored)); // 添加空隙 auto groupBox = new QGroupBox(QGuiApplication::applicationDisplayName ::MinimumExpanding, QSizePolicy::Ignored)); // 添加空隙 outerVerticalLayout->addLayout(outerHorizontalLayout ); // 将水平布局添加到垂直布局 outerVerticalLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy
, QtWidgets.QSizePolicy.Minimum) self.gridLayout_3.addItem(spacerItem, 0, 1, 1, 1) self.progressBar , QtWidgets.QSizePolicy.Minimum) self.gridLayout_3.addItem(spacerItem1, 2, 1, 1, 1) self.pushButton , QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem2, 0, 2, 1, 1) self.gridLayout , QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem, 8, 5, 1, 1) self.label , QtWidgets.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem1, 8, 3, 1, 1) self.lineEdit