状态栏的QT连接功能
QT connect function for status bar
我正在尝试用 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));
}
该方法有效,我很确定,因为我从构造函数中调用了它,它在状态栏中显示 "Line 1 Column 1"。
但是connect函数好像不太正常,我也想不通自己做错了什么。
旧的 (Qt4
) 语法不理解 C++
命名空间。将 connect
调用更改为...
connect(ui->textEdit, SIGNAL(cursorPositionChanged()),
this, SLOT(showCursorPosition()));
或者,如果您使用 Qt5
,您应该使用更新的 signal/slot 语法...
connect(ui->textEdit, &QTextEdit::cursorPositionChanged,
this, &MainWindow::showCursorPosition);
我正在尝试用 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));
}
该方法有效,我很确定,因为我从构造函数中调用了它,它在状态栏中显示 "Line 1 Column 1"。
但是connect函数好像不太正常,我也想不通自己做错了什么。
旧的 (Qt4
) 语法不理解 C++
命名空间。将 connect
调用更改为...
connect(ui->textEdit, SIGNAL(cursorPositionChanged()),
this, SLOT(showCursorPosition()));
或者,如果您使用 Qt5
,您应该使用更新的 signal/slot 语法...
connect(ui->textEdit, &QTextEdit::cursorPositionChanged,
this, &MainWindow::showCursorPosition);