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

时间:2017-12-19 10:48:27

标签: c++ qt qmainwindow qstatusbar

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

Status bar with line number

2 个答案:

答案 0 :(得分:2)

您可以将文字区域的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));
}

答案 1 :(得分:0)

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

要获得QTextEdit中光标的位置,您应该使用

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

和列

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

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