我可以改变qt Qcombobox的方向吗?

时间:2018-06-07 07:52:53

标签: python python-3.x pyqt pyqt5 qcombobox

我希望下拉列表始终低于选择窗口。 但是,似乎窗口会自动调整。 下拉列表上升并被截断。 我想知道如何在不自动排序列表的情况下对其进行排序。

现在情况如此:

ex) ------------------               -------------------
    |    A        | ↓ |     ->      |         A         |
    -------------------             --------------------
                                    |         B         |
                                    ---------------------
                                    |         C         |
                                    --------------------
    C click ->
                                     -------------------
                                     |        A         |
                                     --------------------
                                     |        B         |
    -------------------              --------------------
    |    C         | ↓ |     ->      |        C         |
    -------------------              --------------------

但我想:

   ----------------------      ->    -------------------
  |           C   |  ↓  |            |        A        |
  -----------------------            -------------------
                                     |        B        |
                                      ------------------
                                     |        C        |
                                     -------------------

请帮帮我。

1 个答案:

答案 0 :(得分:0)

您必须在显示弹出窗口后移动弹出窗口,为此您必须移动内部QFrame,它是view()的父级,如下所示:

import sys

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class ComboBox(QComboBox):
    def showPopup(self):
        QComboBox.showPopup(self)
        self.view().parent().move(self.mapToGlobal(QPoint()))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QMainWindow()
    cw = QWidget()
    lay = QVBoxLayout(cw)

    view = ComboBox()
    view.addItems(["A", "B", "C"])

    lay.addWidget(view)
    lay.addWidget(QTableWidget())
    w.setCentralWidget(cw)
    w.show()
    sys.exit(app.exec_())