尝试删除 QTextEdit 中的单词时出现 Qt 简单错误
Qt simple error when trying to delete a word in QTextEdit
我想在 QTextEdit 上按 space 后删除一个词。
这是我的代码:
window.h:
#ifndef WINDOW_H
#define WINDOW_H
#include <QApplication>
#include <QWidget>
#include <QTextEdit>
#include <iostream>
using namespace std;
class Window: public QWidget
{
Q_OBJECT
public:
Window();
public slots:
void write();
private:
QTextEdit *textEdit;
};
#endif // WINDOW_H
window.cpp:
#include "window.h"
Window::Window()
{
setFixedSize(500, 500);
textEdit = new QTextEdit(this);
textEdit->resize(500, 500);
QObject::connect(textEdit, SIGNAL(textChanged()), this, SLOT(write()));
}
void Window::write()
{
QString word = textEdit->toPlainText();
if (word[word.length()-1] == ' ')
{
for(int i=0;i<word.length();i++)
{
textEdit->textCursor().deletePreviousChar();
}
}
}
main.cpp
#include <QApplication>
#include <QTextEdit>
#include <iostream>
#include <QString>
#include "window.h"
using namespace std;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Window window;
window.show();
return app.exec();
}
所以使用这段代码,当我写 "abc " 时,它应该擦除所有单词,但它 return 给我一个错误:
在你的write()
中,如果word.length()
等于0,word[word.length()-1]
指的是word[-1]
,这是无效的。
您应该检查 if
语句中是否有 word.length() >= 1
:
if (word.length() >= 1 && word[word.length()-1] == ' ')
我想在 QTextEdit 上按 space 后删除一个词。
这是我的代码:
window.h:
#ifndef WINDOW_H
#define WINDOW_H
#include <QApplication>
#include <QWidget>
#include <QTextEdit>
#include <iostream>
using namespace std;
class Window: public QWidget
{
Q_OBJECT
public:
Window();
public slots:
void write();
private:
QTextEdit *textEdit;
};
#endif // WINDOW_H
window.cpp:
#include "window.h"
Window::Window()
{
setFixedSize(500, 500);
textEdit = new QTextEdit(this);
textEdit->resize(500, 500);
QObject::connect(textEdit, SIGNAL(textChanged()), this, SLOT(write()));
}
void Window::write()
{
QString word = textEdit->toPlainText();
if (word[word.length()-1] == ' ')
{
for(int i=0;i<word.length();i++)
{
textEdit->textCursor().deletePreviousChar();
}
}
}
main.cpp
#include <QApplication>
#include <QTextEdit>
#include <iostream>
#include <QString>
#include "window.h"
using namespace std;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Window window;
window.show();
return app.exec();
}
所以使用这段代码,当我写 "abc " 时,它应该擦除所有单词,但它 return 给我一个错误:
在你的write()
中,如果word.length()
等于0,word[word.length()-1]
指的是word[-1]
,这是无效的。
您应该检查 if
语句中是否有 word.length() >= 1
:
if (word.length() >= 1 && word[word.length()-1] == ' ')