为啥 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 使用像素作为字体大小?

为啥`1vh` CSS大小解析为屏幕上不同的像素大小

动画 UIView 框架不尊重约束?

为啥即使我没有明确设置表格字体大小,表格也不使用正文字体大小?

为啥角度组件不尊重样式 css?