【问题标题】:QT connect function for status bar状态栏的QT连接功能
【发布时间】:2018-05-21 20:18:59
【问题描述】:

我正在尝试在 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 列”。

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

【问题讨论】:

    标签: qt connect text-editor


    【解决方案1】:

    旧的 (Qt4) 语法无法理解 C++ 命名空间。将connect 调用更改为...

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

    或者,如果您使用Qt5,您应该使用更新的信号/槽语法...

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

    【讨论】:

    • 这两种方法似乎都不起作用,只是没有调用方法。我使用的是 Qt 5.9 MinGw 调试器
    • 我有点插手了,在console.QObject::connect: invalid null parameter中发现了一些东西
    • 这表明ui->textEdit 在MainWindow ctor 的上下文中是nullptr。应该很容易检查。
    • 它有效,我只需要在设置后放置连接线...轻松修复。傻我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2011-08-13
    • 2020-05-11
    • 1970-01-01
    • 2011-02-26
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多