Qt ウィンドウのあれこれ

Qtでウィンドウを作成するには主に2通りの方法があり、QMainWindowかQWidgetを使うかで別れます。 また、QWidgetを継承しているQtウィジェット類はshow()メソッドによって個別のウィンドウとして表示されます。


ウィンドウの作成
ウィンドウにタイトルを付ける
ウィンドウのサイズを設定する

絶対値で設定
リサイズ
サイズの最大値を設定
サイズの最小値を設定 最大値と最小値を兼用しよう

ウィンドウの見た目を変える


ウィンドウの作成

QWidgetでウィンドウ自体は簡単に作成出来ます。 //Windowから2行でウィンドウの作成をしています。

#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //Window
    QWidget *window = new QWidget;
    window->show();

    return a.exec();
}

QWidgetまたはQWidgetを継承しているオブジェクトはshow()メソッドを実行する事でウィンドウの作成が出来ます。 この例では内容の無いウィンドウを表示しているので全ての設定はデフォルトになっています。

ウィンドウにタイトルを付ける

作成したウィンドウにはsetWindowTitle(const QString &)メソッドによってタイトルを付ける事が出来ます。

#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //Window
    QWidget *window = new QWidget;
    window->setWindowTitle("サンプルウィンドウ");
    window->show();

    return a.exec();
}

ウィンドウのサイズを設定する

ウィンドウのサイズを任意で設定する方法は幾つかあります。 またウィンドウに限らずQWidgetを継承しているウィジェットにも適応されます。

絶対値で設定

絶対値を指定するsetFixedHeight(int)setFixedWidth(int)はウィンドウの拡大・縮小無効化し、サイズを固定します。

    QWidget *window = new QWidget;
    window->setWindowTitle("サンプルウィンドウ");
    window->setFixedWidth(300);
    window->setFixedHeight(300);
    window->show();

リサイズ

リサイズではresize(int w, int h)メソッドを使う事でサイズを固定しないサイズを設定する事が出来ます。 これはQWidgetを継承したウィジェットにも適応され、デフォルト値として指定するのに適してますが、ユーザーの操作によって値が書き換えられます。

    QWidget *window = new QWidget;
    window->setWindowTitle("サンプルウィンドウ");
    window->resize(300, 300);
    window->show();

サイズの最大値を設定

最大サイズを設定してそれ以上大きく出来ない様にするにはsetMaximumHeight(int)setMaximumWidth(int)を利用します。 これらはQWidgetを継承しているウィジェットにも適応され、レイアウトによってサイズが調整されてもsetMaximumで設定された値以上にはなりません。

    //Window
    QWidget *window = new QWidget;
    window->setWindowTitle("サンプルウィンドウ");
    window->setMaximumWidth(500);
    window->setMaximumHeight(500);
    window->show();

サイズの最小値を設定

最小サイズを設定してそれ以下小さく出来ない様にするにはsetMinimumWidth(int)setMinimumHeight(int)を利用します。 これはQWidgetを継承しているウィジェットにも適応され、レイアウトによって縮小されてもsetMinimumで設定した値以下にはなりません。

    //Window
    QWidget *window = new QWidget;
    window->setWindowTitle("サンプルウィンドウ");
    window->setMinimumWidth(300);
    window->setMinimumHeight(300);
    window->show();

最大値と最小値を兼用しよう

最大値(setMaximum)と最小値(setMinimum)を兼用する事で想定外のリサイズを阻止する事が出来ます。

以下サンプルではデフォルトを400pxとし、最大600pxで最小300pxにする例です。この範囲以外のリサイズを出来ない様にしています。

    //Window
    QWidget *window = new QWidget;
    window->setWindowTitle("サンプルウィンドウ");

    window->resize(400, 400);           //初期サイズ

    window->setMaximumWidth(600);       //最大の幅
    window->setMaximumHeight(600);      //最大の高

    window->setMinimumWidth(300);       //最小の幅
    window->setMinimumHeight(300);      //最小の高

    window->show();

ウィンドウの見た目を変える

一言にウィンドウと言っても種類は幾つかあります。ウィンドウダイアログだったり、ポップアップウィンドウだったりと種類があります。 ウィンドウの見た目を変えるにはsetWindowFlags(Qt::WindowFlags Type)メソッドを使います。

例でのフラグはQt::Windowを使っており、一般的なコントロールボタンとタイトルのあるウィンドウが作成されます。 Qt::Windowは親QWidgetが無い場合はこのフラグを外す事は出来ません。

    //Window
    QWidget *window = new QWidget;
    window->setWindowTitle("サンプルウィンドウ");

    window->resize(400, 400);
    window->setWindowFlags(Qt::Window);

    window->show();

詳しいウィンドウフラグについては、WindowFlagsについてを参照してください。


以上がウィンドウ関連のあれこれでした。 また、情報の間違いや、希望があればコメント欄から気軽にどうぞ

コメント

このブログの人気の投稿

Qt setWindowFlagsについて

Qt レイアウト 余白の処理