我在试着做一个这样的按钮
目前,我可以使用Qt::LeftArrow
或setArrowType()
中的Qt::RightArrow
创建中间的两个按钮(单个右按钮或单个左按钮)。从docs来看,似乎只有5种可能的类型。如果此功能不是内置的,如何制作自定义双箭头按钮?在
现在我有这个
from PyQt4 import QtCore, QtGui
import sys
class PanningButton(QtGui.QToolButton):
"""Custom button with click, short/long press, and auto-repeat functionality"""
def __init__(self):
QtGui.QToolButton.__init__(self)
self.setArrowType(QtCore.Qt.LeftArrow)
# Enable auto repeat on button hold
self.setAutoRepeat(True)
# Initial delay in ms before auto-repetition kicks in
self.setAutoRepeatDelay(700)
# Length of auto-repetition
self.setAutoRepeatInterval(500)
self.clicked.connect(self.buttonClicked)
self._state = 0
def buttonClicked(self):
# Panning
if self.isDown():
if self._state == 0:
self._state = 1
self.setAutoRepeatInterval(50)
# Mouse release
elif self._state == 1:
self._state = 0
self.setAutoRepeatInterval(125)
def pressed():
global counter
counter += 1
print(counter)
if __name__ == '__main__':
app = QtGui.QApplication([])
counter = 0
panning_button = PanningButton()
panning_button.clicked.connect(pressed)
panning_button.show()
sys.exit(app.exec_())
有几个选项:
- 用qpanter创建图标
^{pr2}$IMHO最简单的解决方案是最后一种情况,因为在第一种情况下,您仅限于Qt提供的功能,而在第二种情况下,它可能不必要地复杂化,但是第三种情况是最佳选择。在
相关问题 更多 >
编程相关推荐