c=article&a=read&id=24889 Qt 中的 sizeHint 属性,sizeHint() 如何使用?...属性的值,而这个值由 sizeHint() 函数来确定。...现在只需知道 sizeHint() 会返回一个被推荐的尺寸。那么这个尺寸的取值是怎样的呢?.../-1 , –1 输出结果中第二行:sizeHint() 返回的是一个无效的 QSize,因为 widget 没有布局。...可以伸展和收缩,不过sizeHint() 的返回值规定了 widget 能缩小到的最小尺寸,同时它比 Preferred 更具优势去获取额外空间 QSizePolicy::Ignored 忽略 sizeHint
);大部分控件,sizeHint是只读属性;拖两个按钮和文本控件,如下:图片保存为test011_sizeHint.ui,并转为test011_sizeHint.py:# -*- coding: utf...-8 -*-# Form implementation generated from reading ui file 'test011_sizeHint.ui'## Created by: PyQt5...代码中加入如下,分别获取三个控件的期望尺寸:self.控件.sizeHint().height()self.控件.sizeHint().width()获取textEdit期望尺寸:图片图片print(f..."获取控件textEdit的期望尺寸的高度:{self.textEdit.sizeHint().height()}")print(f"获取控件textEdit的期望尺寸的宽度:{self.textEdit.sizeHint...self.pushButton_2.sizeHint().width()}")test011_sizeHint.py修改后如下:# -*- coding: utf-8 -*-# Form implementation
为了简化功能,填充的五角星并没有可编辑的能力,而我们只需要重新实现QStyledItemDelegate类中的paint和sizeHint方法即可。...QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE; QSize sizeHint...QModelIndex &index) const Q_DECL_OVERRIDE; }; paint通过原始数据的内容来绘制五角星,数据的获取与之前的Model类似,使用index.data();sizeHint...StarRating starRating = qvariant_cast(index.data()); return starRating.sizeHint...(); } else { return QStyledItemDelegate::sizeHint(option, index); } } 只有当index.data
一些常用值的含义: Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。 Minimum:控件的sizeHint为控件的最小尺寸。...控件不能小于这个sizeHint,但是可以放大。 Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。...Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小。 Expandint:控件可以自行增大或者缩小。...注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值) 加载UI的两种方式 方式1 转成代码后加载 UI文件转Python代码 pyside2-uic form.ui -o
属性说明 值 说明 Fixed 0 固定值策略: Qwidget.sizeHint()对应的缺省大小就是部件的固定不变大小,因此部件不能放大也不能缩小。...Perferred GrowFlag|ShrinkFlag 首选项策略: Qwidget sizeHint()对应的缺省大小是最佳效果,部件允许放大或缩小,但不建议扩展比sizeHint()大,该策略是缺省策略...Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。 ?Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。 ?...Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。 ?Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小。 ?...MinimumExpanding:控件的sizeHint是它的sizeHint,但是可以使用额外的空间,也就是它会尽可能得到更多的空间。 ?
介绍sizePolicy属性之前,需要先讲讲sizeHint和minisizeHint属性。...每个窗口控件都有属于自己的两个尺寸:一个是sizeHint属性(尺寸提示),它是窗口控件的期望尺寸;另一个是minimumSize属性(最小尺寸),它是窗口控件压缩时所能够被压缩到的最小尺寸。...:窗口控件的sizeHint所提示的尺寸就是它的最小尺寸;该窗口控件不能被压缩得比这个值小,但可以变得更大; Maximum:窗口控件的sizeHint所提示的尺寸就是它的最大尺寸;该窗口控件不能变得比这个值大...sizeHint所提示的尺寸还要大; Expanding :窗口控件可以缩小到minisizeHint所提示的尺寸,也可以变得比sizeHint所提示的尺寸大,但它希望能够变得更大; MinimumExpanding...:窗口控件的sizeHint所提示的尺寸就是它的最小尺寸;该窗口控件不能被压缩得比这个值还小,但它希望能够变得更大; lgnored:无视窗口控件的sizeHint和minisizeHint所提示的尺寸
在QSizePolicy类中定义了七种策略: Fixed:使用sizeHint,不能更大,不能更小 Minimum:不能小于sizeHint,可以更大,但不需要更大 Maximum:不得大于sizeHint...,可以更小 Preferred:优先使用sizeHint,可大可小 Expanding:使用sizeHint,越大越好 MinimumExpanding:不得小于sizeHint,越大越好 Ignored...:忽略sizeHint,越大越好 SizePolicy的几个相关的函数: //获取当前的policy QSizePolicy QWidget::sizePolicy() const; //设置新的policy...: 表示窗口的推荐大小 注意这个大小仅仅是推荐大小而不是最终大小 最终的实际大小是由布局器(QLayout)通过行为方式(SizePolicy)决定的 SizeHint的相关函数: //向布局器声明自己需要的空间大小...(推荐的尺寸) virtual QSize sizeHint() const; (2)横向布局: H:Horizontal,水平方向上的 在横向布局中,高度信息被忽略,只关心它的宽度,其他要注意的同上
effective_rect.x() y = y + line_height + space_y next_x = x + item.sizeHint...line_height = 0 if not test_only: item.setGeometry(QRect(QPoint(x, y), item.sizeHint...())) x = next_x line_height = max(line_height, item.sizeHint().height()) 滚动条的设置...effective_rect.x() y = y + line_height + space_y next_x = x + item.sizeHint...())) x = next_x line_height = max(line_height, item.sizeHint().height())
在 Python 中,内置的 File 对象直接提供了一个 readlines(sizehint) 函数来完成这样的事情。...以下面的代码为例: file = open('test.log', 'r') sizehint = 209715200 # 200M position = 0 lines = file.readlines...(sizehint) 每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint...指定的值大一点(除最后一次调用 readlines(sizehint) 函数的时候)。...通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。 file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。
在 Python 中,内置的 File 对象直接提供了一个 readlines(sizehint) 函数来完成这样的事情。...以下面的代码为例: file = open('test.log', 'r')sizehint = 209715200 # 200Mposition = 0lines = file.readlines...(sizehint) 每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint...指定的值大一点(除最后一次调用 readlines(sizehint) 函数的时候)。...通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。 file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。
所有widgets将根据它们的 QWidget::sizePolicy() and QWidget::sizeHint()首先分配一些空间。 2....即便实现了QWidget::heightForWidth(),也有必要提供合理的sizeHint()。 进一步了解,参见:Trading Height for Width....这个可以通过将问题控件作为子类来解决,并实现合适的sizeHint()和minimumSizeHint()函数。 在一些情况下,当布局被添加到widget时需要特别注意。...l setGeometry(),描述如何完成布局 l sizeHint(),布局的首选大小 l itemAt(),描述如何递归布局 l takeAt(),描述如何移除布局中的元素。...调用QLayoutItem::sizeHint()等的代价比较大。在通过函数中,需要再次使用,最好将结果保存在本地变量中。
void setText(const QString& newText); QString text() const { return myText; } QSize sizeHint(...Ticker::setText(const QString &newText) { myText = newText; update(); updateGeometry(); } 3.sizeHint...函数 sizeHint()函数返回文本所需的空间大小,并以此作为窗口部件的理想尺寸。...QSize Ticker::sizeHint() const { return fontMetrics().size(0, text()); } 4.paintEvent事件 paintEvent
在 Python 中,内置的 File 对象直接提供了一个 readlines(sizehint) 函数来完成这样的事情。...sizehint)while not file.tell() - position < 0: position = file.tel1() lines = file.readlines(sizehint...) 每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint 指定的值大一点(...除最后一次调用 readlines(sizehint) 函数的时候)。...通常情况下,Python 会自动将用户指定的 sizehint 的值调整成内部缓存大小的整数倍。 file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。
self.myQListWidget) 54 # Set size hint 55 myQListWidgetItem.setSizeHint(myQCustomQWidget.sizeHint...把 QListWidgetItem 的 sizeHint 设置为 QWidget 的 sizeHint(如果不设置,看不到 QWidget) 6.
This is a QWidget widget') # 创建一个按钮 btn = QPushButton('Button', self) # 设置大小,btn.sizeHint...()为默认大小 btn.resize(btn.sizeHint()) # 设置坐标,以父元素左上角为原点 btn.move(50, 50) # 鼠标悬停在按钮,显示提示框...def initUI(self): # 创建按钮 qbtn = QPushButton('Quit', self) # 按钮初始化 qbtn.resize(qbtn.sizeHint
xlsxWorksheet, col int, row int) { ws.Lock() defer ws.Unlock() rowCount := len(ws.SheetData.Row) sizeHint...ws.SheetFormatPr.CustomHeight { ht = ws.SheetFormatPr.DefaultRowHeight customHeight = true } if rowCount > 0 { sizeHint...append(ws.SheetData.Row, xlsxRow{R: rowIdx + 1, CustomHeight: customHeight, Ht: ht, C: make([]xlsxC, 0, sizeHint
self.setSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.MinimumExpanding) def sizeHint...(self) -> QSize: # 当布局管理器计算控件的大小时,它会首先检查控件的最小大小 # 如果最小大小大于 sizeHint 返回的建议大小,布局管理器将使用最小大小...self.setSizePolicy(QSizePolicy.Policy.MinimumExpanding, QSizePolicy.Policy.MinimumExpanding) def sizeHint...(self) -> QSize: # 当布局管理器计算控件的大小时,它会首先检查控件的最小大小 # 如果最小大小大于 sizeHint 返回的建议大小,布局管理器将使用最小大小
# 将垂直布局添加到groupbox中 group.setLayout(group_layout) group.setFixedSize(group.sizeHint...设置这个对话框的布局 self.dialog.setLayout(dialog_layout) self.dialog.setFixedSize(self.dialog.sizeHint...group_layout.addWidget(item) group.setLayout(group_layout) group.setFixedSize(group.sizeHint...(button_layout) delDialog.setLayout(dialog_layout) delDialog.setFixedSize(delDialog.sizeHint
Q_OBJECT 宏 槽(信号)的定义没有写在 slots(signals) 下边 connect 的时候写错了槽(信号)的名字或者参数 adjustSize()、updateGeometry()以及sizeHint...这个时候你可以选择拿到控件的 QLayout 然后循环对每个布局调用 QLayout::invalidate() ;在比较特殊的情况下你可以选择用 setFixedSize(sizeHint()) 这种奇怪的调用代替循环
rect.width(), rect.height()/2), opt.displayAlignment, line1); } QSize sizeHint...& option, const QModelIndex & index ) const { QSize result = QStyledItemDelegate::sizeHint...delegating everything to QStyle The cool thing is that this delegate uses the QStyle to determine the sizeHint