问题描述
- 初学Qt,为什么对textEdit使用settext函数程序会崩溃?
-
想要当textEdit内容改变时,设置textEdit内容为"shiyanshuju",但是改变内容时程序崩溃。谁能帮帮我?(mainwindow里只有一个textEdit)mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; public slots: void accord(); }; #endif // MAINWINDOW_H main.cpp #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->textEdit,SIGNAL(textChanged()),this,SLOT(accord())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::accord() { ui->textEdit->setPlainText("shiyanshuju"); }
解决方案
textChanged()中调用setPlainText("shiyanshuju");设置文本,而这又会触发textChanged(),结果又调用setPlainText……
无限递归了。
解决方案二:
这个问题我遇到过,来晚了~~~
解决方案三:
控件对象是否合法 不然调用就可能出错
时间: 2024-09-20 10:57:32