QT用addPermanentWidget在状态栏永久信息,实时显示光标所在的行数和列数
时间: 2024-02-16 21:01:15 浏览: 122
您可以使用Qt的QPlainTextEdit控件的cursorPositionChanged()信号来实时获取光标的行数和列数,并将其显示在状态栏上。以下是一个实现的示例代码:
```cpp
// 在窗口构造函数中创建状态栏和文本编辑器
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
// 创建状态栏
QStatusBar *statusBar = this->statusBar();
// 创建文本编辑器
QPlainTextEdit *textEdit = new QPlainTextEdit(this);
setCentralWidget(textEdit);
// 创建标签用于显示行列数
QLabel *cursorPositionLabel = new QLabel("Ln: 1 Col: 1", this);
statusBar->addPermanentWidget(cursorPositionLabel);
// 连接文本编辑器的信号
connect(textEdit, &QPlainTextEdit::cursorPositionChanged, [=]() {
// 获取光标位置
int lineNumber = textEdit->textCursor().blockNumber() + 1;
int columnNumber = textEdit->textCursor().columnNumber() + 1;
// 更新状态栏标签的文本
cursorPositionLabel->setText(QString("Ln: %1 Col: %2").arg(lineNumber).arg(columnNumber));
});
}
```
这段代码在窗口构造函数中创建了一个状态栏、一个文本编辑器和一个标签,用于显示光标所在的行数和列数。当文本编辑器的光标位置发生变化时,会触发cursorPositionChanged()信号,连接的槽函数会获取光标的行数和列数,并更新状态栏标签的文本。最终效果如下图所示:
![状态栏显示光标行列数示例](https://img-blog.csdnimg.cn/20211103140807247.png)
阅读全文