Можно ли масштабировать (или «масштабировать») область QTextEdit? Я считаю, что я читал, что размещение QTextEdit внутри QLayout может позволить масштабировать область QTextEdit, хотя я не нашел, как это реализовать. Пара вариантов ...
CTRL + колесо мыши
Запустив приведенный ниже код, удерживая нажатой клавишу CTRL (управление) и вращая колесико мыши, происходит захват события и текст масштабируется (по крайней мере, в Windows), однако по мере увеличения текста колесо должно двигаться все дальше и дальше для очень большого эффекта, поэтому одна цель состоит в том, чтобы иметь возможность каким-то образом изменить это, возможно, некоторую математику, чтобы увеличить приращения в большей степени при увеличении в направлении плюс.
(Ниже приведены setReadOnly (), потому что кажется, что textEdit должен иметь значение ReadOnly (False) для захвата события мыши, а затем True, чтобы иметь возможность масштабироваться во время вращения колеса мыши, поэтому затем он снова возвращается в исходное состояние False при отпускании клавиши CTRL.
Нажатие кнопки на панели инструментов
Другой вариант - кнопки панели инструментов для увеличения и уменьшения масштаба.
onZoomInClicked () вызывается.
Некоторые текущие проблемы с кодом ниже
1. На нем напечатано: QLayout: Attempting to add QLayout "" to MainWindow "", which already has a layout
, и у меня еще нет головы вокруг этого.
2. QtGui.QTextEdit (self.formLayout) вместо (self) для размещения области textEdit внутри макета дает TypeError: 'PySide.QtGui.QTextEdit' called with wrong argument types
3. wheelEvent () может использовать какой-то способ изменить event.delta (), может быть?
4. Кнопка панели инструментов (только текст) в настоящий момент запускается по умолчанию при нажатии, однако она содержит только оператор печати.
from PySide import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.formLayout = QtGui.QFormLayout(self)
self.textEdit = QtGui.QTextEdit(self)
self.toolBar = QtGui.QToolBar(self)
self.actionZoomIn = QtGui.QAction(self)
self.textEdit.setHtml('<font color=blue>Hello <b>world</b></font>')
self.setCentralWidget(self.textEdit)
self.addToolBar(self.toolBar)
self.toolBar.addAction(self.actionZoomIn)
self.actionZoomIn.setText('Zoom In')
self.actionZoomIn.connect(self.actionZoomIn,
QtCore.SIGNAL('triggered()'), self.onZoomInClicked)
def onZoomInClicked(self):
print "onZoomInClicked(self) needs code"
def wheelEvent(self, event):
print "wheelEvent() captured"
if (event.modifiers() & QtCore.Qt.ControlModifier):
self.textEdit.setReadOnly(True)
event.accept()
def keyReleaseEvent(self, evt):
if evt.key() == QtCore.Qt.Key_Control:
self.textEdit.setReadOnly(False)
if __name__ == '__main__':
app = QtGui.QApplication([])
frame = MainWindow()
frame.show()
app.exec_()
Я боролся с этим в течение нескольких дней, поэтому было бы здорово иметь более настраиваемую шкалу / масштабирование QTextEdit, если это возможно.