我可以改变qt Qcombobox的方向吗?
Can I change the direction of the qt Qcombobox?
我希望下拉列表总是在选项下面window。
但是,似乎 window 是自动调整的。
下拉列表上升并被截断。
我想知道如何在不自动排序列表的情况下对下方进行排序。
现在是这样的情况:
ex) ------------------ -------------------
| A | ↓ | -> | A |
------------------- --------------------
| B |
---------------------
| C |
--------------------
C click ->
-------------------
| A |
--------------------
| B |
------------------- --------------------
| C | ↓ | -> | C |
------------------- --------------------
但我想要:
---------------------- -> -------------------
| C | ↓ | | A |
----------------------- -------------------
| B |
------------------
| C |
-------------------
请帮帮我。
您必须在显示后移动弹出窗口,为此您必须移动作为 view()
父级的内部 QFrame,如下所示:
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_())
我希望下拉列表总是在选项下面window。 但是,似乎 window 是自动调整的。 下拉列表上升并被截断。 我想知道如何在不自动排序列表的情况下对下方进行排序。
现在是这样的情况:
ex) ------------------ ------------------- | A | ↓ | -> | A | ------------------- -------------------- | B | --------------------- | C | -------------------- C click -> ------------------- | A | -------------------- | B | ------------------- -------------------- | C | ↓ | -> | C | ------------------- --------------------
但我想要:
---------------------- -> ------------------- | C | ↓ | | A | ----------------------- ------------------- | B | ------------------ | C | -------------------
请帮帮我。
您必须在显示后移动弹出窗口,为此您必须移动作为 view()
父级的内部 QFrame,如下所示:
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_())