我正在尝试在 QT c++ 中制作一个类似记事本的应用程序,现在我正在尝试实现一个简单的状态栏,告诉用户光标的行和列。
我一直在使用这样的连接功能:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
connect(ui->textEdit, SIGNAL(cursorPositionChanged()), this, SLOT(MainWindow::showCursorPosition()));
.
.
}
我的 showCursorPosition 方法定义如下:
void MainWindow::showCursorPosition(){
int line = ui->textEdit->textCursor().blockNumber()+1;
int column = ui->textEdit->textCursor().columnNumber()+1;
ui->statusBar->showMessage(QString("Line %1 Column %2").arg(line).arg(column));
}
该方法有效,我非常确定,因为我从构造函数中调用了它,并且它在状态栏中显示“第 1 行第 1 列”。
但是连接功能似乎无法正常工作,我似乎无法弄清楚我做错了什么。
旧的 (
Qt4
) 语法不理解 C++
命名空间。将 connect
调用更改为...
connect(ui->textEdit, SIGNAL(cursorPositionChanged()),
this, SLOT(showCursorPosition()));
或者,如果您使用
Qt5
,您应该使用更新的信号/槽语法...
connect(ui->textEdit, &QTextEdit::cursorPositionChanged,
this, &MainWindow::showCursorPosition);