В настоящее время я создаю GUI, к которому я хотел бы добавить возможность перетаскивать строку из QTextEdit и помещать ее в QListView, чтобы отброшенная строка создавала новую строку.
Но, к сожалению, я немного запутался в том, что мне следует делать. Есть множество примеров, но я не вижу ясно, что я должен делать.
Из того, что я понимаю, я должен переопределить функции, но сейчас я больше похож на обезглавленную курицу.
from PyQt5 import QtCore, QtGui, QtWidgets
import testing_ground_lib, sys
class ListModel(QtGui.QStandardItemModel):
def supportedDropActions(self):
<MAYBE DO STUFF HERE>
def dropMimeData(self, data, action, row, column, modelIndex):
<MAYBE DO STUFF HERE>
class testing_ground(QtWidgets.QMainWindow, testing_ground_lib.Ui_TestWindow):
def __init__(self, parent=None):
QtWidgets.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.list_model = ListModel(0, 1, self)
self.inputs_list.setModel(self.list_model)
sys.argv = ['']
app = QtWidgets.QApplication(sys.argv)
testing_ground = testing_ground()
testing_ground.show()
app.exec_()
testing_ground_lib - это всего лишь пользовательский интерфейс, сгенерированный через QtDesigner , в котором у нас есть self.inputs_list.setDragDropMode (QtWidgets.QAbstractItemView.DragDrop) и где определен мой виджет QTextEdit ( self.req_editor )
в переопределенных dropMata Я пытался напечатать материал, просто чтобы посмотреть, как он работает, но ничего не сделал, когда я пытался отбросить свою строку в QListView.
Мне ясно, что я должен реализовать что-то, что добавит строка в ListView по капле строки, и установить новый элемент с текстом из строки, я просто не могу получить, что является отправной точкой.
РЕДАКТИРОВАТЬ : после дальнейшего исследования Мне удалось сделать элемент приемлемым, добавив:
def mimeTypes(self):
return ['text/plain']
в моем классе ListModel. Теперь я думаю, что мне просто нужно правильно переопределить dropMimeData, и я думаю, что все будет хорошо. Я обновлю этот пост, если мне удастся это сделать.