PySide を使用してアプリケーションを構築しており、別の .ui ファイルからウィジェットをロードできるようにしたいと考えています。以下は私が試したコードですが、メインウィンドウとは別にロードされたドックウィジェットをメインウィンドウにドッキングできません。メイン ウィンドウの ui ファイルには、シンプルなメイン ウィンドウとそれに既にドッキングされているいくつかのアイテムが含まれています。dock_widget ui には、ドック ウィジェットといくつかのボタンが含まれています。ドック ウィジェットのバーがロードされたらダブルクリックすると、何もドッキングされないように見え、メイン ウィンドウ上にドラッグしてもドッキングしません。メイン ウィンドウはドック ウィジェットを確実に受け入れます。これは、内部で正常に動作する定義済みのものがいくつかあるためです。
#!/usr/bin/python
# Import PySide classes
import sys
from PySide.QtGui import *
from PySide.QtCore import *
from PySide.QtUiTools import QUiLoader
def load_ui(ui_file, parent=None):
loader = QUiLoader()
file = QFile(ui_file)
file.open(QFile.ReadOnly)
myWidget = loader.load(file, None)
myWidget.show()
file.close()
myWidget.show()
return myWidget
# Create a Qt application
app = QApplication(sys.argv)
# Create a Label and show it
main_window = load_ui("ui/main_window.ui")
dock_widget = load_ui("ui/console.ui", main_window)
# Enter Qt application main loop
app.exec_()
sys.exit()
console.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DockWidget</class>
<widget class="QDockWidget" name="DockWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>542</width>
<height>261</height>
</rect>
</property>
<property name="contextMenuPolicy">
<enum>Qt::DefaultContextMenu</enum>
</property>
<property name="windowTitle">
<string>DockWidget</string>
</property>
<widget class="QWidget" name="dockWidgetContents">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextEdit" name="textEdit_2"/>
</item>
<item>
<widget class="QTextEdit" name="textEdit"/>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>
私が別の方法で何をすべきかについての考え