Могу ли я изменить направление Qt Qcombobox? - PullRequest
0 голосов
/ 07 июня 2018

Надеюсь, выпадающий список всегда будет ниже окна выбора.Однако, кажется, что окно автоматически настраивается.Раскрывающийся список увеличивается и усекается.Мне интересно, как вы можете сортировать внизу без автоматической сортировки списка.

Это ситуация сейчас:

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

Но я хочу:

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

Помощьмне, пожалуйста.

1 Ответ

0 голосов
/ 07 июня 2018

Вы должны переместить всплывающее окно после его отображения, для этого вы должны переместить внутренний 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_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...