Qt チュートリアル
Qtを使い始める
サーチ…
備考
Qtは公式の文書で述べているように、デスクトップ、組み込み、モバイルのクロスプラットフォームアプリケーション開発フレームワークです。サポートされているプラットフォームには、Linux、OS X、Windows、VxWorks、QNX、Android、iOS、BlackBerry、Sailfish OSなどがあります。
このセクションでは、Qtの概要と、開発者がQtを使いたい理由について概説します。
Qt内の大きなテーマについても触れ、関連するトピックにリンクしてください。 qtのドキュメントは新しいので、これらの関連トピックの初期バージョンを作成する必要があります。
バージョン
バージョン | 発売日 |
---|---|
Qt 3.0 | 2001年10月16日 |
Qt 3.3 | 2004-02-05 |
Qt 4.1 | 2005年12月20日 |
Qt 4.8 | 2011-12-15 |
Qt 5.0 | 2012-12-19 |
Qt 5.6 | 2016-03-16 |
Qt 5.7 | 2016年6月16日 |
Qt 5.8 | 2017-01-23 |
Qt 5.9 | 2017-05-31 |
WindowsおよびLinuxでのインストールとセットアップ
Qt for Linuxオープンソース版をダウンロード
https://www.qt.io/download-open-source/にアクセスし 、今すぐダウンロードをクリックし、Linux用のQtインストーラをダウンロードしていることを確認します。
qt-unified-linux-x-online.runという名前のファイルがダウンロードされ、exec権限が追加されます
chmod +x qt-unified-linux-x-online.run
インストーラの実際のバージョンでは、「x」を変更することを忘れないでください。その後、インストーラを実行します
./qt-unified-linux-x-online.run
Qt for Windowsオープンソース版をダウンロード
https://www.qt.io/download-open-source/にアクセスします 。次のスクリーンショットは、Windowsのダウンロードページを示しています。
今何をすべきかは、使用するIDEによって異なります。インストーラプログラムに含まれているQt Creatorを使用する場合は、「今すぐダウンロード」をクリックして実行可能ファイルを実行してください。
Visual StudioでQtを使用する場合は、通常、「今すぐダウンロード」ボタンも機能するはずです。ダウンロードしたファイルがqt-opensource-windows-x86-msvc2015_64-xxxexeまたはqt-opensource-windows-x86-msvc2015_32-xxxexe(xxxはQtのバージョン、たとえば5.7.0など)であることを確認してください。そうでない場合は、[すべてのダウンロードを表示]をクリックして、[Windowsホスト]の最初の4つのオプションのいずれかを選択します。
コード::ブロックでQtを使用する場合は、「すべてのダウンロードを表示」をクリックし、WindowsホストのWindows 32ビット版(MinGW xxx、1.2 GB)のQt xxxを選択します。
適切なインストーラファイルをダウンロードしたら、実行ファイルを実行し、以下の手順に従ってください。 Qtをインストールするには、管理者である必要があります。管理者でない場合は、 ここでいくつかの代替ソリューションを見つけることができます。
任意の運用システムにQtをインストールする
Qtをダウンロードしてインストーラプログラムを開くと、スクリーンショットは少し違って見えるかもしれませんが、インストール手順はすべての運用システムで同じです。ここで提供されているスクリーンショットはLinuxのものです。
既存のQtアカウントでログインするか、新しいQtアカウントを作成してください:
Qtライブラリとツールをインストールするパスを選択してください
ライブラリのバージョンと必要な機能を選択してください
ダウンロードが完了し、インストールが完了したら、Qtインストールディレクトリに移動し、Qt Creatorを起動するか、コマンドラインから直接実行します。
こんにちは世界
この例では、デスクトップ上のウィンドウ枠にプッシュボタンを作成して表示するだけです。プッシュボタンのラベルはHello world!
これは、可能な限り単純なQtプログラムを表します。
まず最初に、プロジェクトファイルが必要です。
helloworld.pro
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = helloworld
TEMPLATE = app
SOURCES += main.cpp
- QTは、このプロジェクトで使用されているライブラリ(Qtモジュール)を示すために使用されます。最初のアプリは小さなGUIなので、QtCoreとQtGuiが必要になります。 Qt5はQtGuiからQtWidgetsを分離するため、Qt5でコンパイルするには
greaterThan
行を追加する必要があります。 - TARGETは、アプリまたはライブラリの名前です。
- TEMPLATEは構築する型を記述します。アプリケーション(app)、ライブラリ(lib)、または単にサブディレクトリ(subdir)にすることができます。
- SOURCESは、プロジェクトをビルドするときに使用するソースコードファイルのリストです。
Qtアプリケーションを含むmain.cppも必要です。
main.cpp
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QPushButton button ("Hello world!");
button.show();
return a.exec(); // .exec starts QApplication and related GUI, this line starts 'event loop'
}
- QApplicationオブジェクト。このオブジェクトはアプリケーション全体のリソースを管理し、GUIを持つQtプログラムを実行するために必要です。 Qtはいくつかのコマンドライン引数を受け取るので、argvとargsが必要です。
a.exec()
呼び出すと、Qtイベントループが起動します。 - QPushButtonオブジェクト。
Hello world!
というラベルのプッシュボタンHello world!
。次の行、button.show()
は、独自のウィンドウ枠で画面上のプッシュボタンを表示します。
最後に、アプリケーションを実行するには、コマンドプロンプトを開き、プログラムの.cppファイルがあるディレクトリを入力します。次のシェルコマンドを入力してプログラムをビルドします。
qmake -project
qmake
make
QtCreatorとQtDesignerの基本アプリケーション
QtCreatorは、現時点では、Qtアプリケーションを作成するための最良のツールです。この例では、ボタンを管理しテキストを書き込む単純なQtアプリケーションを作成する方法を見ていきます。
新しいアプリケーションを作成するには、「ファイル」 - >「新規ファイル」または「プロジェクト:
次に、Projects-> Application-> Qt Widgetsアプリケーションを選択します。
次に、プロジェクトの名前とパスを選択できます。
次に、使用するキットを選択することができます。キットがない場合、QtCreatorはあなたのQtバージョンとあなたのコンピュータのメインコンパイラを含むキットを作成します。コンパイラがない場合は、コンパイラをインストールできます。 Windowsの場合:Visual Studioをインストールします。 Linux / Macの場合:g ++またはclang ++をインストールします。
次に、メインウィンドウクラスの名前、継承クラス、メインウィンドウクラスに対応するファイルの名前を選択できます。 Qtを習得したりテストしている人は、実際にQtを変更する必要はありません。
最後のステップは、このプロジェクトのサブプロジェクトを選択し、gitやsvnなどのバージョンコントロールを追加することです。繰り返しますが、テストの場合にのみ、変更する必要はありません。
次にFinishボタンをクリックします。今ここにいるはずです:
これはアプリケーションのベースです。 Build-> Runまたはctrl + R(デフォルト)をクリックして実行すると、空のウィンドウが表示されます。
ここで、テキストとボタンを追加します。そのために、Qt Designerを使用します。 mainwindow.uiをダブルクリックしてください。そうしなければならないでしょう:(そうでなければxmlファイルがいくつか見えますが、左側のデザインボタンをクリックしてください)
ここQtデザイナー!かなり複雑に思えます。しかし、一度それに慣れれば、それは本当に素晴らしいです。テキストとボタンを追加します。左側には、アイテムのリストがあります。 1つをクリックしてオブジェクトをドラッグアンドドロップすることができます。プッシュボタンをクリックしてウィンドウにドロップします。その後、ラベルを検索し、同じことを行います(探しているオブジェクトを書き込むことができる左上のフィルタがあります)。
このようなものが今あるはずです:
オブジェクトをダブルクリックすることで、オブジェクト上のテキストを変更することができます。または、現在のオブジェクトのプロパティを右下に表示して、テキストプロパティを見つけることができます。ここで名前を変更することもできます。
保存して実行すると(編集ボタンをよくクリックし、変更を保存し直すために再度保存すると)、次のようになります:
ハァッ?私が走ったときに私のレーベルとボタンがそれに似ているのはなぜですか?私たちの中心的なオブジェクトにはレイアウトがないからです。ちなみに、メインウィンドウのサイズを変更すると、オブジェクトがその場所を保持していることがわかります。したがって、それを修正するためにレイアウトを追加します。垂直レイアウトを考えてみましょう。したがって、左のオブジェクトリストから垂直レイアウトをドラッグアンドドロップします。今すぐ表示されるはずです:
フローティングレイアウト。
そこで、ラベルとボタン以外のどこでもメインウィンドウを右クリックします。 c \「レイアウト - >レイアウトを垂直に」をクリックします。これで、あなたのオブジェクトがウィンドウ内で垂直に整列していることがわかります。それでは、レイアウト内でラベルとボタンを移動(ドラッグ&ドロップ)してください。今すぐ入手する必要があります:
あなたのデザイナーに。そしてあなたがあなたを走らせるなら、アプリケーション:
ここでは、ラベルとボタンを使ってアプリケーションを見ることができます。ウィンドウのサイズを変更すると、ラベルとボタンのサイズも変更されます。
しかし、私たちのボタンはまだ何もしていません。 2つの異なる方法で変更することができます。 1つは、作成したメソッドにボタンを接続することです。私たちはメソッド名connectでそれを行うことができます。だから私たちのコードに戻ってmainwindow.cppに行ってみましょう。
connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(whenButtonIsClicked()));
ui->setupUI(this);
のコンストラクタで、 ui->setupUI(this);
uiを初期化します。
次に、.cppクラスにMainWindow :: whenButtonIsClicked()を作成すると、そのようなラベルのテキストを変更できます。
void MainWindow::whenButtonIsClicked()
{
ui->label->setText("the button has been clicked !");
}
mainwindow.hに次のものを追加する必要があります:
public slots:
void whenButtonIsClicked();
パブリックスロットは、シグナルが受信されたときにこのメソッドを呼び出すことができることを意味します。私たちがボタンをクリックすると、信号をリンクし、コールするメソッドを呼び出します。
アプリケーションを実行してボタンをクリックすると、次のようになります。
これは、接続が機能していることを意味します。しかし、Qt Designerを使うと、もっと簡単な方法で作業することができます。それ以外の方法でやりたい場合は、接続を解除してボタンを外してください(別の方法で接続するため)、mainwindow.uiに戻り、ボタンを右クリックしてください。 Go to slot ...をクリックし、clicked()を選択してokを押します。
次に、この関数に移動する必要があります:
void MainWindow::on_pushButton_clicked()
{
}
これは、ボタンをクリックすると呼び出される関数です。だからあなたは
ui->label->setText("it's even easier !");
それに。 mainwindow.hに移動して変更を保存します(スロットに移動すると、要求した信号にリンクされたメソッドが作成されます).hで関数を定義しますが、保存しません。ファイルに保存して保存します)。
そして、アプリケーションを実行してボタンを押すと、新しいメッセージが表示されます(まだ古いメッセージが表示されている場合は、接続を削除していないということです)。
私たちはまた、他の多くのもので多くのものを変換することができる素晴らしいクラスであるQVariant
おかげで、私たちのラベルにint、doubleなどを追加することができます。したがって、ボタンを押したときに増加するintを追加します。
だから.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void whenButtonIsClicked();
private slots:
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
double _smallCounter;
};
#endif // MAINWINDOW_H
.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(whenButtonIsClicked()));
_smallCounter = 0.0f;
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::whenButtonIsClicked()
{
ui->label->setText("the button has been clicked !");
}
void MainWindow::on_pushButton_clicked()
{
_smallCounter += 0.5f;
ui->label->setText("it's even easier ! " + QVariant(_smallCounter).toString());
}
そして今、私たちは再び救われ、走り出すことができます。ボタンをクリックするたびに、それは_smallCounterの値で「もっと簡単です!」と表示されます。だからあなたは次のようなものを持っているべきです:
このチュートリアルは完了です。 Qtの詳細を知りたい場合は、Qtの他の例とドキュメントをStackOverflowのドキュメントまたはQtのドキュメントで見てみましょう