QTextEdit foreach

Posted

技术标签:

【中文标题】QTextEdit foreach【英文标题】: 【发布时间】:2015-11-25 04:10:55 【问题描述】:

我正在 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 时输出Hi

【问题讨论】:

【参考方案1】:

我不知道为什么你有一个QTextEdits 的列表,但是要编译你的代码,你必须像下面这样。

QLinkedList<QTextEdit*> list;
QTextEdit* textEdit = NULL;
foreach(textEdit, list)
    qDebug() << textEdit->toPlainText();

您的代码的问题是您试图将QTextEdti* 分配给QString

回答评论中提出的问题:

textEdittextChanged() 信号连接到插槽。

connect(textEdit, SIGNAL(textChanged()), SLOT(onTextChanged()))

在槽中,用空格字符分割textEdit中的文本并迭代。

private void MyWnd::onTextChanged()

    QStringList wordList = textEdit->toPlainText().split();
    foreach (QString word, wordList )
    
        qDebug() << word;
    

【讨论】:

哈哈,我的错,我搞砸了。我真正想做的是列出QStrings。我不知道如何将该列表与文本编辑链接起来。那么我怎样才能做到这一点,如果用户输入单词Hi,它会在qDebug() 中打印Hi?换句话说,我怎样才能让QLinkedList 浏览textEdit 文本?【参考方案2】:

天哪,您这样做完全错误,并要求解决方案对您的问题没有帮助,实际上它会使问题变得更糟。

您所需要的一切都记录在 Qt 中。 检查这个Qt example。

【讨论】:

好吧,这个答案没有帮助。我尝试编写代码,以便人们可以看到我尝试过的内容。通过告诉我我做的完全错误并将其留在那里而不是展示我可以做什么,这没有任何帮助 你在开玩笑吗?我应该从完整描述的 Qt 示例中复制粘贴整个代码吗?男人只需从链接复制粘贴部分代码,一切都会开箱即用。我给你的链接你不明白什么?

以上是关于QTextEdit foreach的主要内容,如果未能解决你的问题,请参考以下文章

获取 QTextEdit 的换行

QTextEdit控件使用

一个QLineEdit一个QTextEdit,向其中一个输入信息按回车,在QTextEdit中出现,怎么实现?

Qt“QTextEdit”函数

QTextEdit 插入文本

文本编辑框QTextEdit