状态栏的QT连接功能

时间:2018-05-21 12:13:12

标签: qt connect text-editor

我试图在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列"在状态栏中。

但是连接功能似乎没有正常工作,我似乎无法弄清楚我做错了什么。

1 个答案:

答案 0 :(得分:1)

旧的(Qt4)语法不了解C++命名空间。将connect来电更改为...

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

或者,如果您使用Qt5,则应使用较新的信号/插槽语法...

connect(ui->textEdit, &QTextEdit::cursorPositionChanged,
        this, &MainWindow::showCursorPosition);