为啥 QPushButton 不尊重绝对像素大小?
Posted
技术标签:
【中文标题】为啥 QPushButton 不尊重绝对像素大小?【英文标题】:Why does QPushButton not respect absolute pixel size?为什么 QPushButton 不尊重绝对像素大小? 【发布时间】:2021-04-04 03:11:18 【问题描述】:我正在开发一个在带有触摸 LCD 屏幕的嵌入式设备上运行的应用程序。对于开发设置,我设置了一个 Xephyr 窗口,带有相同分辨率 (1280x800) 的火柴盒 WM。
我已经开发了一个客户下拉菜单,它将向下扩展病房并显示选择按钮,在我的开发系统上,这看起来像 9 设计的那样)是这样的:
在终端设备上,按钮填满整个窗口,如下所示:
功能似乎在那里,但即使固定像素大小用于按钮大小,它似乎也占用了整个窗口的空间。它们的“下拉”按钮是从如下列表创建的:
btn_size = QtCore.QSize(206,57)
for n in btnlist:
_name = str(n)
self.drpbtns.append(QtGui.QPushButton(_name))
self.drpbtns[i].clicked.connect(lambda checked, v=_name: func(v))
self.drpbtns[i].resize(btn_size)
self.drpbtns[i].move(x,y+(i*(self.drpbtns[i].height()-1)))
self.drpbtns[i].setStyleSheet('background-color: rgb(255,255,255); \
border: 1px solid rgb(216,216,216); \
color: rgb(92,92,92); \
font: bold 22pt "Avenir"')
self.drpbtns[i].setFlat(True)
i = i+1
为什么按钮不遵守分配的QSize()
?
我已经在Qt Forum 中启动了一个新线程,并将确保在两个线程之间交叉填充回复!
【问题讨论】:
把resize
改成setFixedSize
@eyllanesc 就这样吗?不幸的是,我要到星期一才能测试/验证它。像往常一样,非常感谢您的反馈!谢谢!
没有更多上下文很难给你一个更全面的答案,但如果你将这些按钮添加到布局中,尝试设置大小(除非设置了大小约束)和位置完全没用:它们被称为布局管理器,因为它们管理布局,它们决定小部件应该放在哪里以及它们应该有多大。这也意味着如果您正在使用布局,虽然设置固定大小会起作用,但移动不会。如果您仍然面临类似的问题,我建议您编辑您的问题并提供一个最小的可重现示例。
虽然事实证明setFixedSize()
并没有真正解决问题(按钮仍然会爆炸以覆盖整个可见空间),但我可以说布局正在下方使用,我只是想为这个自定义的“下拉小部件”使用修复定位按钮。下次去办公室时,我将不得不研究一个最小的可重现示例(因为我目前无法访问让我复制此问题的模拟单元)....还有什么我可以尝试的吗同时出去?
在此示例中调整可见区域的大小不是问题,因为我们固定使用 1280x800 LCD 显示器,并且用户根本无法调整可见区域的大小(全屏触摸界面)
【参考方案1】:
事实证明,我在这里找到了解决问题的方法:https://forum.qt.io/topic/78752/how-to-place-widgets-by-specifying-positions-in-qframe
我更改了我的 QPushButton
行以包含解决问题的父级:self.drpbtns.append(QtGui.QPushButton(_name,self.parent))
【讨论】:
以上是关于为啥 QPushButton 不尊重绝对像素大小?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Twitter Bootstrap 使用像素作为字体大小?