Das Aufrufen einer benutzerdefinierten Klasse in der .ui-Datei schlägt fehl

Ich erhalte diese Fehlermeldung, wenn ich versuche, auf meine benutzerdefinierte Klasse von zu verweisen.ui Datei. Was ist los mit dem, was ich tue?

"QFormBuilder was unable to create a custom widget of the class 'TimelinePane'; defaulting to base class 'QWidget'." 

QWidget erscheint mit dem Layout, in dem ich spezifiziere.ui Datei. Problem ist nur die benutzerdefinierte Klasse.

Um die Beschreibung der benutzerdefinierten Klasse hinzuzufügen, habe ich sie geändert.ui Datei manuell (fügte die gesamte<customwidgets> Abschnitt), weshalb ich eine neue Frage öffnen muss, da ich das gleiche Q noch nicht gefunden habe. Ich vermute den Weg der Klasse in.ui Datei, aber keine der Optionen, die ich ausprobiert habe (siehe den Teil, den ich auskommentiert habe), hat funktioniert. Ich denke auch, dass mitpython Sollte hier nicht der Fall sein, bin mir aber nicht ganz sicher. Ich habe es nicht versuchtC++ noch.

from PySide import QtGui  
from PySide import QtCore
from PySide import QtUiTools

class MyWidget(QtGui.QMainWindow):
    def __init__(self, *args):  
       apply(QtGui.QMainWindow.__init__, (self,) + args)

       loader = QtUiTools.QUiLoader()
       file = QtCore.QFile('./src/prove_qt_ui_file/prove_main_widget.ui') 
       file.open(QtCore.QFile.ReadOnly)
       self.myWidget = loader.load(file, self)
       file.close()
       self.setCentralWidget(self.myWidget)

if __name__ == '__main__':  
   import sys  
   import os
   print("Running in " + os.getcwd() + " .\n")
   app = QtGui.QApplication(sys.argv)  
   win  = MyWidget()  
   win.show()
   app.exec_()

proof_main_widget.ui

<?xml version="1.0" encoding="UTF-8" ?>
<ui version="4.0">
 <class>MyWidget</class>
 <widget class="QWidget" name="MyWidget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>687</width>
    <height>698</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Runtime Monitor</string>
  </property>
  <layout class="QVBoxLayout">
   <property name="spacing">
    <number>0</number>
   </property>
   <property name="margin">
    <number>0</number>
   </property>
   <item>
    <widget class="QSplitter" name="splitter">
     <property name="orientation">
      <enum>Qt::Vertical</enum>
     </property>
     <property name="handleWidth">
      <number>9</number>
     </property>
     <widget class="QTreeWidget" name="warn_tree">
      <attribute name="headerVisible">
       <bool>false</bool>
      </attribute>
      <column>
       <property name="text">
        <string notr="true">1</string>
       </property>
      </column>
     </widget>
     <widget class="QTreeWidget" name="tree_all_devices">
      <attribute name="headerVisible">
       <bool>false</bool>
      </attribute>
      <column>
       <property name="text">
        <string notr="true">1</string>
       </property>
      </column>
     </widget>
     <widget class="TimelinePane" name="timeline_pane" native="true">
      <property name="minimumSize">
       <size>
        <width>0</width>
        <height>80</height>
       </size>
      </property>
      <property name="whatsThis">
       <string extracomment="Timeline"/>
      </property>
     </widget>
    </widget>
   </item>
  </layout>
 </widget>
 <customwidgets>
  <customwidget>
   <class>TimelinePane</class>
   <extends>QWidget</extends>
<!--   <header>timeline_pane</header> --> <!-- NG -->
<!--   <header>prove_qt_ui_file.timeline_pane</header> --> <!-- NG -->
   <header>src.prove_qt_ui_file.timeline_pane</header>  <!-- NG -->
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

timeline_pane.py

from PySide.QtGui import QWidget, QGraphicsScene, QGraphicsView, QColor, QHBoxLayout, QPushButton
class TimelinePane(QWidget):
    def __init__(self, parent):
        super(TimelinePane, self).__init__()
        print '\tTimelinePane init 1' # This doesn't print.

(Umgebung) Ubuntu 12.04, Python 2.7.3

Antworten auf die Frage(1)

Ihre Antwort auf die Frage