5

を使用してカーソルの行を取得できますQTextEdit.textCursor().blockNumber()が、1行が複数行に折り返されると、実際の行番号を返すことができません。

どうやってやるの?

4

3 に答える 3

1

Python での同様のソリューションを次に示します。上記の以前の問題のコメントで指摘した問題を修正します。これは のサブクラスのメソッドですQTextEdit:

def getLineAtPosition(self, pos):
  cursor = self.textCursor()
  cursor.setPosition(pos)

  cursor.movePosition(QTextCursor.StartOfLine)
  lines = 0

  lines_text = cursor.block().text().splitlines()
  lines_pos = 0
  for line_text in lines_text:
    lines_pos += len(line_text) + 1
    if lines_pos > cursor.position() - cursor.block().position():
      break
    lines += 1

  block = cursor.block().previous()
  while block.isValid():
    lines += block.lineCount()
    block = block.previous()

  return lines
于 2013-11-01T16:34:47.180 に答える
-1

QTextCursor次のような便利なメソッドがたくさんあります。

int QTextCursor::position () const

ドキュメント内のカーソルの絶対位置を返します。カーソルは文字の間に置かれます。

int QTextCursor::positionInBlock () const

ブロック内のカーソルの相対位置を返します。カーソルは文字の間に置かれます。

これは と同等position() - block().position()です。

于 2013-04-04T15:58:02.937 に答える