Top > Ruby > Qte > QMultiLineEdit
  • 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
#!/usr/bin/env ruby
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_Sample_1.png

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
#!/usr/bin/env ruby
require 'qte'
require 'qpe'
 
include Qte
include Qpe
 
$KCODE = "UTF8"
 
#MyNotepad クラスはまだ派生しただけで、何もしてません。段階的に拡張します。
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は改行)

添付ファイル: fileQMultiLineEdit_Sample_1.png 550件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 22 Jul 2011 21:57:56 JST (1525d)