我似乎找不到答案,我想把QToolButton附加到QTreeWidget上的特定列。理想情况下,我希望它在右边的列与一些文字在左边。我已经想出了如何附加到第一列没有文字,但我想它在第三列
我认为答案是使用setItemWidget和headerItem,但似乎可以让它们工作
如果有人能提出建议那就太棒了
from Qt import QtWidgets, QtCore, QtGui
import sys
class Main_window(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
self.resize(900, 500)
self.tree = HTreeWidget()
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.tree)
self.setLayout(layout)
class HTreeWidget(QtWidgets.QTreeWidget):
def __init__(self, *args, **kargs):
QtWidgets.QTreeWidget.__init__(self, *args, **kargs)
self.header_labels = ["header 1", "header 2", "header 3", "header 4"]
self.setColumnCount(len(self.header_labels))
self.setHeaderLabels(self.header_labels)
header = self.header()
button = QtWidgets.QToolButton(header)
button.setArrowType(QtCore.Qt.DownArrow)
button.clicked.connect(self.menu)
action_group = QtWidgets.QActionGroup(self, exclusive=True)
self.filter_checked_out = action_group.addAction(QtWidgets.QAction('Filter 1', self, checkable=True))
self.filter_checked_in = action_group.addAction(QtWidgets.QAction('Filter 2', self, checkable=True))
self.no_filter = action_group.addAction(QtWidgets.QAction('No Filter', self, checkable=True))
self.no_filter.setChecked(True)
def menu(self):
menu = QtWidgets.QMenu(self)
menu.addAction(self.filter_checked_out)
menu.addAction(self.filter_checked_in)
menu.addAction(self.no_filter)
menu.exec_(QtGui.QCursor().pos())
def main():
app = QtWidgets.QApplication(sys.argv)
window = Main_window()
window.show()
app.exec_()
if __name__ == '__main__':
main()
所以我想头3有一个下拉列表与过滤器列表。有能力扩展,最终以不同的下拉列表标题4
谢谢你, 标记
我找到了一种方法,但是我觉得应该有更好的方法来达到我想要的结果。我会把这个代码留在这里,只是把需要它的人包起来
相关问题 更多 >
编程相关推荐