Qt textChange() in QTextEdit

Qt textChange() in QTextEdit

本文关键字:in QTextEdit textChange Qt      更新时间:2023-10-16

我写了这段代码,但当我在TextEdit中更改文本时,什么也没发生。我做错了什么?我试过使用这个->update()和widget->update(。。。

主窗口.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTextEdit>
#include <QPushButton>
#include <QWidget>
#include <QVBoxLayout>
class MainWindow : public QMainWindow
{
    Q_OBJECT
    QTextEdit *edit;
    QPushButton *pb;
    QWidget *widget;
    QVBoxLayout *layout;
    void changeCaption();
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};
#endif // MAINWINDOW_H

mainwindow.cpp:

#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    edit = new QTextEdit;
    pb = new QPushButton("HEHE");
    widget = new QWidget;
    layout = new QVBoxLayout(widget);
    layout->addWidget(edit);
    layout->addWidget(pb);
    this->setCentralWidget(widget);
    connect(edit, SIGNAL(textChanged()), this, SLOT(chngeCaption));
}
MainWindow::~MainWindow()
{
}
void MainWindow::changeCaption(){
    pb->setText("CHANGED");
}

首先,您应该将changeCaption函数定义为.h文件中的插槽:

private slots:
    void changeCaption();

第二CCD_ 2信号具有CCD_。还要更正connect语句中插槽名称的拼写错误:

connect(edit, SIGNAL(textChanged(QString)), this, SLOT(changeCaption()));

最好使用Qt5语法,因为它有助于在编译时检测此类错误并简化代码:

connect( edit, &QLineEdit::textChanged, this, &MainWindow::changeCaption );