Функция QT connect для строки состояния

Я пытаюсь создать приложение, похожее на блокнот, на 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» в строке состояния.

Но функция подключения, похоже, не работает должным образом, и я не могу понять, что я сделал не так.


person Rusu Florin Andrei    schedule 21.05.2018    source источник


Ответы (1)


Старый (Qt4) синтаксис не поддерживает C++ пространства имен. Измените вызов connect на ...

connect(ui->textEdit, SIGNAL(cursorPositionChanged()),
        this, SLOT(showCursorPosition()));

В качестве альтернативы, если вы используете Qt5, вам следует использовать более новый синтаксис сигнала / слота ...

connect(ui->textEdit, &QTextEdit::cursorPositionChanged,
        this, &MainWindow::showCursorPosition);
person G.M.    schedule 21.05.2018
comment
В любом случае это не работает, он просто не вызывает метод. Я использую отладчик Qt 5.9 MinGw - person Rusu Florin Andrei; 21.05.2018
comment
Я немного вмешался и кое-что нашел в консоли. QObject :: connect: недопустимый нулевой параметр - person Rusu Florin Andrei; 21.05.2018
comment
Это предполагает, что ui->textEdit является nullptr в контексте MainWindow ctor. Должно быть легко проверить. - person G.M.; 21.05.2018
comment
Это работает, мне просто нужно было поставить линию подключения после настройки ... простое исправление. Я такой глупый. - person Rusu Florin Andrei; 21.05.2018