如何在QGridLayout中设置小部件的顺序

时间:2019-08-13 06:05:14

标签: pyqt5 pyqtgraph

我正在尝试将QPushButton放在PlotWidget上。我当前的代码始终在按钮顶部具有plot小部件。如何将按钮移到QGridLayout的前面?

还是PyQt5中有更好的方法来覆盖小部件?

我尝试使用.raise__().lower__()都无法正常工作。 据我发现,PyQt5中无法设置z值 更改将小部件添加到QGridLayout的顺序无效

PlotWindow类在Window控制器类的Stacked小部件以及其他一些类中使用

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.central_widget = QtWidgets.QStackedWidget()
        self.setCentralWidget(self.central_widget)

        self.plot = PlotWindow(self)
        self.central_widget.addWidget(self.plot)

        self.central_widget.setCurrentWidget(self.plot)
        self.show()

class PlotWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(PlotWindow, self).__init__(parent)

        plot_frame = pyqtgraph.PlotWidget()

        self.connect_btn = QtWidgets.QPushButton("Connect", self)

        plot_wrapper_layout = QtWidgets.QGridLayout()
        plot_wrapper_layout.addWidget(plot_frame, 0, 0, 12, 12)
        plot_wrapper_layout.addWidget(self.connect_btn, 11, 11, 1, 1)

        self.setLayout(plot_wrapper_layout)

预期中:该按钮在图形的右下角顶部可见

结果:“连接”按钮隐藏在绘图小部件的后面

1 个答案:

答案 0 :(得分:0)

plot_frame = pyqtgraph.PlotWidget(自身)。这会将图形小部件放在PlotWindow.children()中的按钮之前,该按钮可更改它们的呈现顺序。

Heikie的评论解决了该问题