Моя программа Qt использует систему извлечения виджетов objectNames при щелчке мышью путем нахождения координат mousePressEvents и последующего нахождения дочернего виджета (или окна) по этим координатам.
Это прекрасно работает для большинства виджетов, но не для следующих виджетов:
QScrollBox, QTableWidget, QGraphicsView, QTextEdit, QSpinBox.
Эти виджеты (кроме QSpinBox) возвращают 'qt_scrollarea_viewport' вместо их objectName, предположительно потому, что это дочерний виджет из перечисленных выше.
Например:
У вас есть QTextEdit с геометрией (0,0,50,50).
Очевидно, что координаты (10,10) находятся на этом виджете.
Пока чтоВызов parent.childAt( (10,10) )
не возвращает QTextEdit.
Вызов .objectName()
показывает, что это вместо этого 'qt_scrollarea_viewport'.
Если бы у вас было двадцать разных QTextEdits с двадцатью разными именами объектов, они бы все ещеreturn 'qt_scrollarea_viewport'.
Итак, как мне получить фактическое objectName QTextEdit, а не его графический дочерний виджет (который я интерпретирую как 'viewport'), учитывая, что у меня есть координатывиджет?
Спасибо!
PyQt4
Python 2.7.2
Windows 7