2011-01-28 16 views
7

私はPyQtを使用しており、QtDesignerでウィジェットを宣伝しようとしています。 "ヘッダファイル"フィールドに、私のウィジェットのサブクラスを含むファイルへの完全なモジュールパスを指定すると、それを動作させることができます。PyQtウィジェットを宣伝する

フルモジュールパスを指定することなく、QtDesignerのウィジェットをPyQtウィジェットに昇格させるより良い方法はありますか?ここで

がうまくいけば、私が話しているものを説明するための例です:

/PythonModuleRoot/Ui/MainUi.py

from PyQt4 import QtCore, QtGui, uic 
class MainUi(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.ui = uic.loadUi(os.path.join(os.path.dirname(__file__), 'MainUi.ui'), self) 

/PythonModuleRoot/Ui/CustomWidget.py

from PyQt4 import QtCore, QtGui, uic 
class CustomWidget(QtGui.QWidget): 
    def __init__(self, parent): 
     QtGui.QWidget.__init__(self, parent) 

/PythonModuleRoot/Ui/MainUi.ui

MainUi.uiではウィジェットをプロモートしていますヘッダーファイルフィールドを "PythonModuleRoot.Ui.CustomWidget"に設定します。

+1

編集であなた自身の質問に答えました。代わりにあなたのソリューションを回答として投稿してみませんか? [自己回答を掲示することはここで奨励されています。](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) – mizo

答えて

7

私は実際のコードが私が与えた簡略化された例と少し異なります。

/PythonModuleRoot/Ui/MainUi.py 

/PythonModuleRoot/Ui/MainUi.ui 

/PythonModuleRoot/Ui/Widgets/CustomWidget.py 

だから私はちょうどMainUiはそう、CustomWidgetをインポートする方法をするヘッダファイルの内容を変更するために必要な:「Widgets.CustomWidgetを」私の実際のコードは、より多くのこのようなものです。この記事では正しい方向に私を指摘しました:http://www.mail-archive.com/[email protected]/msg17893.html

関連する問題