我正在用Qt做一个简单的代码文本编辑器,它可以提取C++关键字并给它们着色。我知道Qt有一个foreach函数,但是如何在用户输入的QTextEdit中使用它呢?
下面是我尝试过的方法,如果我在textEdit中键入单词Hi,它就会在调试中弹出。这不管用。
QLinkedList<QTextEdit* > list;
QString str = "Hi";
foreach(str, list)
qDebug() << str;我想我在某个论坛上看到了这个想法,但它又一次不起作用。如果你能提供帮助,任何建议都是有帮助的!谢谢!
编辑:
这是我现在所拥有的:
QString text = ui->textEdit->toPlainText();
QString str = "Hi";
foreach(str, text)
qDebug() << str;除了在每次打印字符时qDebug()输出Hi,而不是在打印所有Hi字符时
发布于 2015-11-25 13:06:56
我不知道为什么你有一个QTextEdit的列表,但是为了编译你的代码,你必须像下面这样做。
QLinkedList<QTextEdit*> list;
QTextEdit* textEdit = NULL;
foreach(textEdit, list)
qDebug() << textEdit->toPlainText();代码的问题在于,您试图将QTextEdti*分配给QString。
对评论中提出的问题的回答:
将textEdit的textChanged()信号连接到插槽。
connect(textEdit, SIGNAL(textChanged()), SLOT(onTextChanged()))
在插槽中,使用空格字符拆分textEdit中的文本,然后迭代。
private void MyWnd::onTextChanged()
{
QStringList wordList = textEdit->toPlainText().split();
foreach (QString word, wordList )
{
qDebug() << word;
}
}发布于 2015-11-25 16:47:12
天哪,你这样做是完全错误的,要求解决方案对你的问题毫无帮助,事实上,这只会让事情变得更糟。
此外,您需要的所有文档都在Qt中。
检查此Qt example。
https://stackoverflow.com/questions/33908353
复制相似问题