Qt creator + pycharm + pyqt5+Anaconda3でMDIのアプリのサンプルを作るまで

とりあえず、Qtで作るMDIがどんなもんかを調べた時の手順
それぞれのツールはすでにインストールされている

#Qt creator(4.5.0)上の作業
### プロジェクトを作る

1.<ファイル><ファイル・プロジェクトの新規作成>
  <プロジェクト:アプリケーション><Qt ウィジットアプリケーション>
  で[選択]
2.プロジェクト名とパスを指定して[次へ]
3.キットの選択で、インストールされているC++の環境を指定して[次へ]
4.クラス情報を設定（通常そのまま）で[次へ]
5.プロジェクト管理は、実情に合わせて設定して[完了]

### メインウィンドウを作る

1.left sidebarの[プロジェクト名][forms][mainwindow.ui]をダブルクリック
2.メインウィンドウ画面の左上に出ているメニューの[ここに入力]をダブルクリックしてメニュー名(今回はFile)
3.続けて出てきたサブメニューに、サブメニューのキャプション(今回はwindow1とwindow2)
4.left sidebarの[Contailners]から"MDI Area"を選択して、Main window上にドラッグ
5.右側のプロパティー欄のオブジェクト"Main Window"を右クリックしてメニューから一番下のレイアウトを選び、その中のレイアウトを適当に選択する-->ウィンドウいっぱいにMDI Areaが広がる

### サブウィンドウを作る
1.<ファイル><ファイル・プロジェクトの新規作成><ファイルとクラス:Qt><Qt designerフォーム>で[選択]
2.[Widget]を選択して[次へ]
3.パスで名前(今回がform1.ui)を設定して[次へ]
4.プロジェクト管理で[完了]
5.プロパティ欄のオブジェクト名を"Form1"に変更
6.適当に部品を配置
7.もうひとつ、form2の名前でフォームを作る

###　保存する
Ctrl+Shift+S

#pycharm(2017.3.3)上の作業
### プロジェクトを作る
1.<New Project>でプロジェクトを作る。
2.Qtで作ったmainwindow.uiを作ったプロジェクトのフォルダの下にコピーする

### pyuic変換する準備をする
1.<File><Setting>[Tools][External Tools]を選んで、真ん中上にある+ボタンをおす
2.Name:pyuic(これは別の名前でもよい)
  Program:(Anacondaのあるフォルダ)\Library\bin\pyuic5.bat
  Arguments: -o \$FileNameWithoutExtension\$.py \$FileNameWithoutExtension\$.ui
  Working directory:\$FileDir\$
　で[OK]

### Qtを使う準備
1.<File><default Setting>[Project Interpreter]を選んで、Project Interpreterのリストから、今回作成したプロジェクトを選ぶ
2."Latest"の左側の+ボタンを押す
3."pyqt5"で検索し、出てきたpyqt5を選んで[Install Package]ボタンを押す

### uiをpyに変換
1.mainwindow.uiを選択肢右クリック[External Tools][pyuic]を選ぶ->mainwindow.pyが出来る
2.form1.ui,form2.uiについても同様に処理

### 最初のコードを書く
1.[File][New][Python File]でファイルを新規作成する"MdiTest"という名前にした
2.中味はこんなかんじ

```python3:MdiTest.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from xMainWindow import XMainWindow

app = QApplication(sys.argv)
window =XMainWindow()
window.show()
sys.exit(app.exec_())
```

### サブウィンドウ用の処理を書く
1.[File][New][Python File]でファイルを新規作成する"xForm1"という名前にした
2.中味はこんなかんじ

```python3:xForm1.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

from form1 import Ui_Form1
from PyQt5 import QtWidgets

class form1(QtWidgets.QWidget, Ui_Form1):
    def __init__(self, parent=None):
        super(form1, self).__init__(parent)
        self.setupUi(self)
```

```python3:xForm2.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

from form2 import Ui_Form2
from PyQt5 import QtWidgets

class form2(QtWidgets.QWidget, Ui_Form2):
    def __init__(self, parent=None):
        super(form2, self).__init__(parent)
        self.setupUi(self)
```

### main windowに対応する処理を書く
1.xMainWindow.pyを新規作成する
2.中味はこんなかんじ


```python3:xMainWindow.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

from PyQt5.QtWidgets import QApplication, QMainWindow
from mainwindow import Ui_MainWindow
from xForm1 import form1
from xForm2 import form2

class   XMainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(QMainWindow, self).__init__()
        self.setupUi(self)

        self.actionwindow1.triggered.connect(self.openForm1)
        self.actionwindow2.triggered.connect(self.openForm2)

    def openForm1(self):
        subWindow = form1(self.mdiArea)
        self.mdiArea.addSubWindow(subWindow)
        subWindow.show()
        print("openTest1Form")

    def openForm2(self):
        subWindow = form2(self.mdiArea)
        self.mdiArea.addSubWindow(subWindow)
        subWindow.show()
        print("openTest2Form")
```

###　実行
MdiTest.pyを選択して右クリックして'Run MdiTest' 


#### 注意

form1とform2を作る時、レイアウトが指定されていないと、ウィンドウが最小の大きさで開くので注意
具体的には、Qt creatorのオブジェクトリストから"Form1 QWidget"を選んで右クリックして、コンテキストメニューからレイアウトを選んで、指定する