- Web の掲示板でおなじみの、複数行編集できる入力欄を作ってみましょう。
- これの応用の極めつけが ZEditor です。もちろんメモ帳を作ることもできます。
- ソースコードは utf-8 前提です。
- 動作確認環境 : Ruby 1.8.6-1 + rubyqte 0.5.4
テキスト編集用のウィジェット QMultiLineEdit
テキストの編集を行うには、QMultiLineEdit を使います。その名前の通り、QLineEditの発展系であり、「文字の入力を複数行対応したもの」ってことですね。
最小限の記述でメモ帳っぽくしてみる
使い方の例を簡単に書いてみましょう。
以下のコードはウィンドウを表示するだけのコードに2、3行追記しただけのものです(13~14行目部分)。それだけなのですが、新規テキストの編集の基本的な機能のメモ帳として動いてしまいます。...ファイルの読み書きや折り返しなどについては「まだ何も作っていない」のでできませんが、「っぽくしてみる」段階ですのでまずはお試しください。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| | require 'qte'
require 'qpe'
include Qte
include Qpe
$KCODE = "UTF8"
class MainWindow < QMainWindow
def initialize
super
self.setCaption(tr("QMultiLineEdit さんぷる"))
@qmle = QMultiLineEdit.new(self)
self.setCentralWidget(@qmle)
end
end
class MyApplication < QPEApplication
def initialize
super([$0]+ARGV)
self.setDefaultCodec(QTextCodec::codecForName("utf-8"))
end
end
app = MyApplication.new
win = MainWindow.new
app.showMainWidget(win)
app.exec
|
QMultiLineEdit ウィジェットについては、派生させて拡張することが多いので、派生クラス MyNotepad を生成することにしましょう。以下のコードはその派生クラス版の書き換えコードですが、上記のコードとやっていることは同じです。
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| | require 'qte'
require 'qpe'
include Qte
include Qpe
$KCODE = "UTF8"
class MyNotepad < QMultiLineEdit
end
class MainWindow < QMainWindow
def initialize
super
self.setCaption(tr("QMultiLineEdit さんぷる"))
@notepad = MyNotepad.new(self)
self.setCentralWidget(@notepad)
end
end
class MyApplication < QPEApplication
def initialize
super([$0]+ARGV)
self.setDefaultCodec(QTextCodec::codecForName("utf-8"))
end
end
app = MyApplication.new
win = MainWindow.new
app.showMainWidget(win)
app.exec
|
ToDo List
(今後の予定です、やらないかもしれない項目も混じっていますので注意。Qt ツールキット リファレンスの QMultiLineEdit 項が参考になります)
- 表示の設定
- 折り返しの設定を行う
- #setWordWrap と #WordWrap
- #setWrapPolicy と #WrapPolicy
- ファイルのロード、セーブを交えてメモ帳(簡易エディタ)として機能するように
- ファイルを読み込んで #setText で貼り付ける
- #text でテキストを取り出し、ファイルに書き込む
- 追記(append)、消去(clear)、削除などの各種編集系メソッド
- カーソル移動
- キーカスタマイズ(keyPressEvent)
- ×で閉じる前の確認をする、OK で保存して閉じる、等。(規定値では×は破棄して閉じる、OKは改行)