2020/08/23
Ubuntuの.NET CoreでGUIを使う(2)
前回の続きで、QMLファイルを使って.NET Coreに実装する内容をお話します。前回、Qt Creatorで作成したQMLファイルは以下の通りです。テキストボックスやボタン等のコントロールのプロパティとクリックイベント(37、49行目)が記録されています。
# Qt_test.qmlまず、Ubuntuのターミナルから以下のコマンドでプロジェクト(プロジェクト名:QtTest)を作成しました。
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.15
Window {
id: window
visible: true
width: 320
height: 240
title: qsTr("Hello World")
Text {
id: element
x: 44
y: 117
width: 229
height: 81
color: "#ff0000"
layer.smooth: false
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
fontSizeMode: Text.FixedSize
clip: false
textFormat: Text.PlainText
font.pixelSize: 20
}
Button {
id: button1
x: 44
y: 44
text: qsTr("Show")
Connections {
target: button1
onClicked: element.text= "Hello world!"
}
}
Button {
id: button2
x: 178
y: 44
text: qsTr("Clear")
Connections {
target: button2
onClicked: element.text = ""
}
}
}
dotnet new console -o QtTest次に、作業フォルダに移動して、
cd QtTestQML.NETライブラリをインストールしました。
dotnet add package Qml.Net.LinuxBinariesこの際、追加ライブラリのインストール要求がありましたので、以下のコマンドを実行。
sudo apt install libc6-dev次に、メインプログラムのProgram.csを以下の通り編集しました。18行目でQMLファイルを読み込んでいます。
// Program.csコード作成後、以下のコマンドでビルドしました。
using System;
using Qml.Net;
using Qml.Net.Runtimes;
namespace QtTest
{
class Program
{
static int Main(string[] args)
{
RuntimeManager.DiscoverOrDownloadSuitableQtRuntime();
using (var app = new QGuiApplication(args))
{
using (var engine = new QQmlApplicationEngine())
{
engine.Load("Qt_test.qml");
return app.Exec();
}
}
}
}
}
dotnet build正常にビルドできれば、実行ファイル(dllファイル)は「bin/Debug/netcoreapp3.1」フォルダに作成されますので、移動して実行しました。
cd bin/Debug/netcoreapp3.1この時、QMLファイル(Qt_test.qml)はdllファイルと同じフォルダ、つまり「bin/Debug/netcoreapp3.1」に入れておきます。実行すると、無事にフォームが立ち上がりました。
dotnet ./QtTest.dll

