やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Qtで1行メモするアプリを作ってみた

 これまでの学習を元に。

成果物

github.com

f:id:ytyaru:20181126180151p:plain

 実行ファイルと同じパスにmemo.txtファイルができる。LineEditでEnterキーを押下すると追記する。

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 2018-06-27
  • Qt 5.7.1

ソースコード

 要点を抜粋。

#include <QFile>
#include <QDir>
#include <QTextStream>
#include <QMessageBox>
#include <QDebug>

void MainWindow::on_lineEdit_returnPressed()
{
    QString filePath = QDir(QApplication::applicationDirPath()).filePath(tr("memo.txt"));
    QFile file(filePath);
    if (!file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
    {
        QMessageBox::information(this, tr("ファイルが開けませんでした"), file.errorString());
        return;
    }
    QTextStream out(&file);
    out << ui->lineEdit->text() << endl;
    qDebug() << ui->lineEdit->text();
    file.close();
}

学んだこと

  • MainWindow
    • レイアウト
    • タイトル
  • LineEdit
    • reternPressed()
  • MessageBox
  • ファイルパスの結合
  • アプリのルートディレクト
  • ファイルの追記モード

MainWindow

レイアウト

 ウインドウの幅に応じてLineEditを拡大・縮小したい。

  1. デザイナでMainWindowを右クリックする
  2. 右クリックメニュー→レイアウト格子状に並べるを選択する
    f:id:ytyaru:20181126180932p:plain
  3. ウインドウの幅が自動拡縮されるようになった
    f:id:ytyaru:20181126181108p:plain

タイトル

 ウインドウのタイトルを変更したい。

f:id:ytyaru:20181126181255p:plain

  1. 画面右下プロパティウインドウのフィルタにtitleを入力する
  2. WindowTitleプロパティの値を任意に設定する

LineEdit

 1行テキスト編集UI。

  1. 画面左上のフィルタにlineを入力する
  2. UI候補にLineEditが表示される
  3. MainWidnowへドラッグ&ドロップする

シグナル: reternPressed()

 Enterキー押下時のイベント。

  1. MainWindowに配置したLineEditを右クリックする
  2. スロットへ移動をクリックする
  3. reternPressed()を選択してOKする

f:id:ytyaru:20181126181725p:plain

MessageBox

#include <QMessageBox>
QMessageBox::information(this, tr("タイトル"), tr("本文"));

ファイルパスの結合

#include <QDir>
QDir(tr("/dir")).filePath(tr("file.txt"));

アプリのルートディレクト

QApplication::applicationDirPath()

ファイルの追記モード

 QIODevice::Append|で他のフラグも併用可。

QFile file(filePath);
file.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text);

参考

Qt要素

課題

  • ウインドウの高さを増やすとLineEditがセンタリングされてしまう。上の位置はずらしたくない。どうすればいいのやら……

f:id:ytyaru:20181126180404p:plain

所感

 やっと何か作った感を少し持てた。