我正在使用Ct ++使用Qt5和QScintilla作为框架的源代码编辑器。在这个项目中,我想连续显示文本光标的行和列(光标位置),因此我需要一个在移动文本光标时会发出的SIGNAL。根据QScintilla文档,cursorPositionChanged(int line,int index)每当移动光标时都会发出所需的信号,所以我想这一定是我需要的方法吗?这是我到目前为止所做的:
// notify if cursor position changed
connect(textEdit, SIGNAL(cursorPositionChanged(int line, int index)), this, SLOT(showCurrendCursorPosition()));
我的代码会编译,编辑器窗口会根据需要显示,但不幸的是,我得到了警告:
QObject::connect: No such signal QsciScintilla::cursorPositionChanged(int line, int index)
有人可以给我提供一个QScintilla C ++或Python示例,以显示如何连续获取并显示当前光标位置吗?
完整的源代码托管在这里: https://github.com/mbergmann-sh/qAmigaED
感谢任何提示!
答案 0 :(得分:2)
此问题是由运行时已验证的旧连接语法引起的,此外,旧语法还有另一个必须与签名匹配的问题。根据您的情况,解决方案是使用没有您提到的问题的新连接语法。
connect(textEdit, &QTextEdit::cursorPositionChanged, this, &MainWindow::showCurrendCursorPosition);
有关更多信息,您可以检查:
答案 1 :(得分:1)
谢谢,eyllanesc,您的解决方案很好! 我自己也找到了一个可行的解决方案,只需要从连接调用中删除命名的变量:
// notify if cursor position changed
connect(textEdit, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(showCurrendCursorPosition()));
...
//
// show current cursor position and display
// line and row in app's status bar
//
void MainWindow::showCurrendCursorPosition()
{
int line, index;
qDebug() << "Cursor position has changed!";
textEdit->getCursorPosition(&line, &index);
qDebug() << "X: " << line << ", Y: " << index;
}
本主题已解决。