Windows で QtJambi を使う

Posted Mon Oct 06 2014

Qt Jambi を使った時のメモです.

僕は GUI が苦手です.どうせやるなら他の言語にも応用できるものがいい,ということで QtJambi です.数年前からあまり開発が活発ではないみたいですが使ってみました.

インストール

ここ から Windows 32bit 4.8.5-beta4 をダウンロードしてインストールします.

main を書きます.

import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QPushButton;

public class Main {
    public static void main(String[] args) {
        QApplication.initialize(args);

        QPushButton hello = new QPushButton("Hello World!");
        hello.resize(120, 40);
        hello.setWindowTitle("Hello World");
        hello.show();

        QApplication.execStatic();
    }
}

インストールしたフォルダからqtjambi-4.8.5.jarqtjambi-native-win32-mingw-4.8.5.jarをカレントフォルダにコピーし,コマンドラインから下記を入力します.

$ javac -cp qtjambi-4.8.5.jar;qtjambi-native-win32-mingw-4.8.5.jar Main.java 
$ jar cvf Main.jar *.class
$ java -cp qtjambi-4.8.5.jar;qtjambi-native-win32-mingw-4.8.5.jar;Main.jar Main

IntelliJ 用プロジェクトを作成

IntelliJ から読込できるプロジェクトを作成します.フォルダ構成は下記のようにします.

QtJambiTest --- lib --- qtjambi-4.8.5.jar
             |       +- qtjambi-native-win32-mingw-4.8.5.jar
             |
             +- project --- plugins.sbt
             |
             +- src --- main --- java --- Main.java
             |
             +- build.sbt

project/plugins.sbtに下記を追加します.

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

build.sbtを下記のような感じで書きます.

name := "QtJambiTest"

version := "0.0.1"

scalaVersion := "2.11.2"

libraryDependencies ++= Seq(
)

コマンドラインから下記を入力して,Intellijのプロジェクトを作成します.

$ sbt gen-idea

作成されたプロジェクトからプログラムを実行できるかと思います.

QtDesigner で作成したuiファイルからソースを生成

下記の手順で.uiファイルからソースコードが生成されますが,一部の機能は対応していない?模様です.enum 系のパラメータで警告が出ます.

  1. *.ui*.jui にリネーム
  2. uiファイルを開き,<?xml version="1.0" encoding="UTF-8"?>を削除
  3. 一番上の空白行を削除
  4. <ui version="4.0"><ui version="4.0" language="jambi">に変更
  5. juic -cp .

参考