I'm trying to make a notepad-like app in QT c++, and right now I'm trying to implement a simple status bar that tells the user the Line and the Column of the cursor.
I've been using the connect function like this:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
connect(ui->textEdit, SIGNAL(cursorPositionChanged()), this, SLOT(MainWindow::showCursorPosition()));
.
.
}
And I have the showCursorPosition method defined like this:
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));
}
The method works, I am pretty sure because I called it from the constructor and it shows "Line 1 Column 1" in the status bar.
But the connect function doesn't seem to work properly, and I can't seem to figure out what I've done wrong.
The old (Qt4
) syntax doesn't understand C++
namespaces. Change the connect
call to...
connect(ui->textEdit, SIGNAL(cursorPositionChanged()),
this, SLOT(showCursorPosition()));
Alternatively, if you're using Qt5
you should make use of the newer signal/slot syntax...
connect(ui->textEdit, &QTextEdit::cursorPositionChanged,
this, &MainWindow::showCursorPosition);