フェルマータ

個人用のメモ。ソフトウェアの導入とかが多くなる予定。

Qt の ui ファイルを cmake (CLion)から使う

ポエム

 何度やっても QT_UIC_EXECUTABLE is missing といいよる cmake に愛想を尽かさず頑張った。 Qt の *.ui ファイルを使う方法がわかったので記事を書く。Qt 記事少なすぎでしょみんなもっと記事書いて!英語記事ですらほとんどないじゃん。

症状

 以下の様な CMakeLists を 使うと、 QT_UIC_EXECUTABLE 無いんだけどwwwと cmake が激おこしてた。

# sources
qt_wrap_ui(vsampler_corpus_editor view/ui_CorpusMetaInfoView.h view/ui_CorpusMetaInfoView.cpp vioew/CorpusMetaInfoView.ui)
add_library(vsampler_corpus_editor ${files_you_need})

対処法

 リファレンス見ると一見これで正しそうだしなんとかなりそうだがお前の qt_wrap_ui の使い方は間違っている。 結局ちゃんと設定ができていないのが問題だったらしい。

# sources
qt5_wrap_ui(QT_CORPUS_EDITOR_UI_HEADERS hoge.ui foo.ui)
add_library(vsampler_corpus_editor ${QT_CORPUS_EDITOR_UI_HEADERS} ${files_you_need})

こうしろってさ。んで cpp, c++ ファイルからこうせよってさ。

#include "ui_Hoge.h"
#include "Hoge.h"

hoge::Hoge(QWidget *parent)
        : QMainWindow(parent), ui(new Ui::Hoge) {
    ui->setupUi(this);
}

hoge::Hoge::~Hoge() {
    delete ui;
}

cpp ファイルの方は Qt Creator に準じているだけ。これで *.ui のヘッダファイルが生成されていい感じになる。 一週間かかった死にたい。