我试图在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列"在状态栏中。
但是连接功能似乎没有正常工作,我似乎无法弄清楚我做错了什么。
答案 0 :(得分:1)
旧的(Qt4
)语法不了解C++
命名空间。将connect
来电更改为...
connect(ui->textEdit, SIGNAL(cursorPositionChanged()),
this, SLOT(showCursorPosition()));
或者,如果您使用Qt5
,则应使用较新的信号/插槽语法...
connect(ui->textEdit, &QTextEdit::cursorPositionChanged,
this, &MainWindow::showCursorPosition);