QWidgetにオブジェクトを追加する
Qtは基本QWidget(とかQDialog、QMainWindow)をベースとして書くけど、あんまり違いとかわかんないからそのままQWidget使ってます。
とりあえずコード。めんどくさいので全部main.cppに自分は記述します。
#include "widget.h" #include <QtWidgets> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; QPushButton *button = new QPushButton("QUIT"); QObject::connect(button, SIGNAL(clicked()), &a, SLOT(quit())); QHBoxLayout *lay = new QHBoxLayout(); lay->addWidget(button); w.setLayout(lay); w.show(); return a.exec(); }
こんな感じ。上から大まかに説明します。
(いきなり重要)
Qt5使ってる人は
#include <QtWidgets>
これかなり重要です。なんかQt4の説明記事ばかりで毎度
#include <QtGui>
してください、とか書いてあるんですけど、Qt5から(あくまでも自分の環境では)
これインクルードしない限りお話にならない(オブジェクトとか色々まとめてやってくれる)ので、取り敢えずこれは忘れないこと。
ようやくコードの説明。
QPushButtonの宣言
QPushButton *button = new QPushButton("QUIT");
buttonという名のQPushButtonのオブジェクトを生成。
次はかなり重要なオブジェクトのSIGNAL, SLOTのお話。
QObject::connect(button, SIGNAL(clicked()), &a, SLOT(quit()));
あんまり考えずにそのまま見た通り
buttonのclick受け取ったら、a(アプリケーション)をquit()させますよ、ってことです。
Qtは大体これつかって処理作ってるイメージです。
最後にタイトルの通り、QWidgetにオブジェクトを追加するやり方。
QHBoxLayout *lay = new QHBoxLayout();
lay->addWidget(button);
w.setLayout(lay);
w.show();
QHBoxLayoutとやらでレイアウト指定し、そのレイアウトにbuttonを追加。
widgetにレイアウトをセットしてw.show()で表示。
完成品がこれ
ど真ん中にquitが来ててダサい。これ押したらそのままアプリケーション終了するので、まあ上手くはできたのかな。
とりあえず今回はここまで。
はあ、説明終わった。疲れた。説明になってないと思うけどゆるして。