QtのC++チュートリアルをGo言語で実装した話
Jun 23, 2019 · 2 minute read · CommentsprogrammingGolangQt
QtのC++チュートリアルをGo言語に読み替えた時のメモです。
参考サイト
以下メモ
QApplication app(argc, argv);
app := widgets.NewQApplication(len(os.Args), os.Args)
new QLabel
のようなコンポーネントのnew
widgets.NewQLabel
- オーバーロードできないので
NewQLabel2
のような派生メソッドがある - 補完とか使ったり
widgets.go
の定義見たりして推測するQLabel(QWidget * parent = 0, Qt::WindowFlags f = 0)
はNewQLabel
QLabel(const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0)
はNewQLabel2
- Golangではデフォルト引数が使えないため自分でドキュメントを参照して設定する必要がある
- ポインタはたいてい
nil
でよくてフラグは上の例なら直接0で良さそう - WindowFlagsは
core.go
で定義されている (e.g.Qt__Widget
)
- ポインタはたいてい
qmake
でQT += core
が必要そうなのはだいたいcore.go
- 各メソッドはGolang命名規則 (パブリックなら大文字スタート) に則っている
- 殆どはそのまま使えるけどGolangはオーバーロードできないのでコンストラクタのように後ろに数字がついている事がある
- 基本はコンストラクタと一緒(のはず)
- シグナルは
object.ConnectEvents(func)
の形を取る- 独自の方法で管理している? (
qt.go
) - 複数登録できる
- 独自の方法で管理している? (
- カスタムクラスは qtmoc の説明を見ておけば多分だいたいなんとかなる
- SLOT: 使い方がよくわからないので後で調べる
tr
=>core.QObject_Tr
Q_OBJECT
マクロはcore.QObject
とかウィジェットを継承してくれると勝手にやってくれそう- シグナルは
signal:"signalName"
- 発行は
SignalName()
と大文字になる
- 発行は