前回までは、「ハローワールド」を表示させるプログラムでしたが、今回は、QPlainTextEditを使って、テキストエディターを作ってみようと思います。
ウィンドウはメインウィンドウを使用。クラスQMainWindow、QMenu、QManuBar、QPlainTextEditを実装します。
最後にQHBoxLayoutで整えてやります。
これで実行すると形は様になります。
次にメニューバーに作りたいメニューを追加し、追加したメニューに実行したい項目を追加していきます。例えば、新規・保存・名前を付けて保存といった具合です。
追加した項目をconnectで継いでいけば、それらしいプログラムが出来上がります。
一番苦労したのは、入力内容の保存と開くです。
保存するには、QFileDialog::getFileNameを使う方法がありますが、初心者なので、子の方法を使わずに基本に忠実に別ウィンドウを開くようにしました。
最初にSaveAsDialog=new QFileDialog()に始まります。
ウィンドウタイトルはsetWindowTitle、保存するディレクトリーの指定するのにはsetDirectoryを使用、この時ディレクトリーを指定する際、QDirを使用し、QDir::homepath()を呼び出すようにします。
フィルター名の選択項目はsetNameFilter(QString)【任意のフィルター名を入れる】を使用。既にファイルが存在していたら確認ウィンドウを出すようにsetNameFilterDetailsVisibleをtrueに設定。
これだけではAccept時どのような操作するか指定していないので、setAcceptMode(SaveAsDialog->AcceptSave)とするとAccept時「保存」ボタンが表示される。
SaveAsDialog->exec()が実行されるとどのように処理するかをif文を使って入力していく。
QStringList StrList=SaveAsDialog->selectedFilters()で選択内容を呼び出す。
配列なのでこのままでは使えないため、StrList.at(0)で抽出する。
例えば、QFile SaveFile(StrList.at(0))と入力する。
ファイルを開いて書き込みのみにする。よってSaveFile.open(QIODevice::WriteOnly)と入力。
入力テキストはテキストストリームなのでQTextStreamを使用。
QTextStream TextStream(&SaveFile)この時、ポインターを使用して保存ファイル名を指定。
保存するには(例)TextStream<<PlainTextEdit->toPlainText()と入力する。
保存したらメモリー内に残さないように、TextStream.flush()とすると消える。
ファイルを閉じるには、SaveFile.close()とすればいい。
実行すると以下のようになるはずです。
テキストファイルを開くには、Dialog作成までは保存用のDialogと同じである。
Accept時の設定は、AcceptSaveからAcceptOpenにする。
実行時同処理するかはif文を使って指定していく。
ファイルしていまでは、保存と同じである。
ファイルを開いてどう処理するかが違うだけである。
ファイルを開いたら読み込みのみにする。
よって、OpenFile.open(QIODevice::ReadOnly)とする。
QPlainTextEditによって挿入させればよいので、
PlainTextEdit->insertPlainText(OpenFile.readAll())とすれば、読み込み完了である。
ファイルを閉じておしまいである。
実行すると、
ファイルを選択して開くとテキストが挿入される。
色々未完成なところがあるが、フォンとの種類を選択したり、フォントサイズを変えられるようにしたり機能を付け加えていきたいと思います。
ウィンドウはメインウィンドウを使用。クラスQMainWindow、QMenu、QManuBar、QPlainTextEditを実装します。
最後にQHBoxLayoutで整えてやります。
これで実行すると形は様になります。
次にメニューバーに作りたいメニューを追加し、追加したメニューに実行したい項目を追加していきます。例えば、新規・保存・名前を付けて保存といった具合です。
追加した項目をconnectで継いでいけば、それらしいプログラムが出来上がります。
一番苦労したのは、入力内容の保存と開くです。
保存するには、QFileDialog::getFileNameを使う方法がありますが、初心者なので、子の方法を使わずに基本に忠実に別ウィンドウを開くようにしました。
最初にSaveAsDialog=new QFileDialog()に始まります。
ウィンドウタイトルはsetWindowTitle、保存するディレクトリーの指定するのにはsetDirectoryを使用、この時ディレクトリーを指定する際、QDirを使用し、QDir::homepath()を呼び出すようにします。
フィルター名の選択項目はsetNameFilter(QString)【任意のフィルター名を入れる】を使用。既にファイルが存在していたら確認ウィンドウを出すようにsetNameFilterDetailsVisibleをtrueに設定。
これだけではAccept時どのような操作するか指定していないので、setAcceptMode(SaveAsDialog->AcceptSave)とするとAccept時「保存」ボタンが表示される。
SaveAsDialog->exec()が実行されるとどのように処理するかをif文を使って入力していく。
QStringList StrList=SaveAsDialog->selectedFilters()で選択内容を呼び出す。
配列なのでこのままでは使えないため、StrList.at(0)で抽出する。
例えば、QFile SaveFile(StrList.at(0))と入力する。
ファイルを開いて書き込みのみにする。よってSaveFile.open(QIODevice::WriteOnly)と入力。
入力テキストはテキストストリームなのでQTextStreamを使用。
QTextStream TextStream(&SaveFile)この時、ポインターを使用して保存ファイル名を指定。
保存するには(例)TextStream<<PlainTextEdit->toPlainText()と入力する。
保存したらメモリー内に残さないように、TextStream.flush()とすると消える。
ファイルを閉じるには、SaveFile.close()とすればいい。
実行すると以下のようになるはずです。
テキストファイルを開くには、Dialog作成までは保存用のDialogと同じである。
Accept時の設定は、AcceptSaveからAcceptOpenにする。
実行時同処理するかはif文を使って指定していく。
ファイルしていまでは、保存と同じである。
ファイルを開いてどう処理するかが違うだけである。
ファイルを開いたら読み込みのみにする。
よって、OpenFile.open(QIODevice::ReadOnly)とする。
QPlainTextEditによって挿入させればよいので、
PlainTextEdit->insertPlainText(OpenFile.readAll())とすれば、読み込み完了である。
ファイルを閉じておしまいである。
実行すると、
ファイルを選択して開くとテキストが挿入される。
色々未完成なところがあるが、フォンとの種類を選択したり、フォントサイズを変えられるようにしたり機能を付け加えていきたいと思います。
コメント
コメントを投稿