QGridLayout里添加这一个QPushButton怎么让其占两行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QGridLayout里添加这一个QPushButton怎么让其占两行相关的知识,希望对你有一定的参考价值。
问题实例
解决方法:
//在gridlayout网格7,0位置,插入占两列一行的按钮0,位置根据自己的需要修改
gridLayout->addWidget(btn_equal,7,0,1,2);
//在gridlayout网格6,4位置,插入占两行一列的按钮=,位置根据自己的需要修改
gridLayout->addWidget(btn_equal,6,4,2,1);
两行一列的按钮没法直接排好,需要添加语句:
btn_equal(你的按钮名)->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
//QSizePolicy::Expanding 为拉宽数值(int),随便赋个大一点值就可以看出效果了
//如果是python的话将“->”全部改为“.”就可以了,希望能够帮到你
只能说现在的答题人只为刷分,都乱答的。
参考技术A 将它与它右侧的单元格合并,这样如果一行有3列的话colspan=2的话那么一行只需要写两个标签就ok了,因为将两个合并了。如果colspan3那么这一行只需要一个td就ok了。这就是单元格合并如何在 QGridLayout 中为隐藏的 QtWaitingSpinner 保留空间?
【中文标题】如何在 QGridLayout 中为隐藏的 QtWaitingSpinner 保留空间?【英文标题】:How to reserve space for hidden QtWaitingSpinner in QGridLayout? 【发布时间】:2019-02-11 00:27:30 【问题描述】:我正在尝试构建一个使用 QtWaitingSpinner 的 QtGui 应用程序:https://github.com/z3ntu/QtWaitingSpinner。我在 QGridLayout 中有它。但是,这意味着当微调器取消隐藏并启动时,它旁边的按钮会改变大小。如何在网格中为微调器保留正确的空间量,以便无论是否显示微调器,其旁边的按钮都保持恒定大小?
根据这个***帖子How to use spacers in Qt,我怀疑答案涉及QSpacerItem。但是,我不知道如何根据微调器需要的大小来调整 QSpacerItem 的大小。
这是显示我的问题的代码的最小示例:
import PyQt5.QtWidgets as QWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
from waitingspinnerwidget import QtWaitingSpinner
import sys
class Example_Window(QWidgets.QWidget):
def __init__(self):
super(QWidgets.QWidget,self).__init__()
self.initUI()
def initUI(self):
self.button=QWidgets.QPushButton("Start/Stop Spinner")
self.button.clicked.connect(self.toggle_spinner)
self.spinner = QtWaitingSpinner(self,centerOnParent=False)
self.grid = QWidgets.QGridLayout()
self.grid.addWidget(self.button,0,0)
self.grid.addWidget(self.spinner,0,1)
self.setLayout(self.grid)
self.show()
def toggle_spinner(self):
if self.spinner.isSpinning():
self.spinner.stop()
else:
self.spinner.start()
if __name__ == '__main__':
app = QWidgets.QApplication([])
main = Example_Window()
sys.exit(app.exec())
【问题讨论】:
【参考方案1】:试试看:
import PyQt5.QtWidgets as QWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
from waitingspinnerwidget import QtWaitingSpinner
import sys
class Example_Window(QWidgets.QWidget):
def __init__(self):
super(QWidgets.QWidget,self).__init__()
self.initUI()
def initUI(self):
self.button = QWidgets.QPushButton("Start Spinner") # +
self.button.clicked.connect(self.toggle_spinner)
self.spinner = QtWaitingSpinner(self, centerOnParent=False)
self.grid = QWidgets.QGridLayout()
self.grid.addWidget(self.button, 0, 0)
# self.grid.addWidget(self.spinner,0,1) # ---
self.grid.addWidget(self.spinner, 0, 1, 1, 2) # +++ <---
self.setLayout(self.grid)
self.show()
def toggle_spinner(self):
if self.spinner.isSpinning():
self.spinner.stop()
self.button.setText("Start Spinner") # +
else:
self.spinner.start()
self.button.setText("Stop Spinner") # +
if __name__ == '__main__':
app = QWidgets.QApplication([])
main = Example_Window()
main.resize(170, 70) # +++
sys.exit(app.exec())
【讨论】:
以上是关于QGridLayout里添加这一个QPushButton怎么让其占两行的主要内容,如果未能解决你的问题,请参考以下文章