代码之家  ›  专栏  ›  技术社区  ›  G.Wije

Qt简单记事本,在QmainWindow的状态栏上打印行号

  •  1
  • G.Wije  · 技术社区  · 7 年前

    我用Qt/C++创建了一个简单的记事本。我想在的状态栏上打印行号 QMainWindow 当我单击文本区域的某个位置时,如Microsoft Windows的记事本

    Status bar with line number

    3 回复  |  直到 7 年前
        1
  •  3
  •   thibsc    7 年前

    您可以连接 cursorPositionChanged() 将文本区域的信号发送到 QMainWindow :

    // the connection
    connect(ui->plainTextEdit, SIGNAL(cursorPositionChanged()), this, SLOT(showCursorPos()));
    // your custom slot
    void MainWindow::showCursorPos()
    {
        int line = ui->plainTextEdit->textCursor().blockNumber()+1;
        int pos = ui->plainTextEdit->textCursor().columnNumber()+1;
        ui->statusBar->showMessage(QString("Ln %1, Col %2").arg(line).arg(pos));
    }
    
        2
  •  0
  •   Tzig    7 年前

    我猜您正在使用QTextEdit作为“编辑器”小部件。

    要获取光标在QTextEdit中的位置,应使用

    row = myTextEdit->textCursor()->blockNumber();
    

    对于列

    column = myTextEdit->textCursor()->positionInBlock();
    

    然后用这些信息编辑状态栏文本

        3
  •  0
  •   user18462006    3 年前

    使用此代码 ui->textEdit->document()->lineCount();