因为要对一段字符串进行多次处理,为了避免多次刷新UI带来的负担,肯定是先将数据读入内存,进行处理,然后一次性更新UI。
所以先调用QTextEdit的toPlainText将文本存入一个QString里。然后就有多种方法了。如果必须考虑行号的话,可以调用QString的split,将数据存入一个QStringList里,这样就可以得到一个QString的链表,每个节点一行,可以快速定位到任意一行。最后处理完是可以调用QStringList的join生产一个QString,再调用QTextEdit的setPlainText存入文本框。
用两个窗口啊,上面一个只是输入命令的,下面一个显示输入命令和返回结果,这样比较容易。
如果用一个,就用追加,自定义一个命令提示符,显示命令提示符时才可以输入命令,其他情况时,文本框为只读,当命令执行完,返回时,再显示命令提示符。运行结果也追加到文本中。好像是Append方法,我记得是有追加方法的。
// QTextEdit是多行文本编辑框,自动换行的,如果你要加行号,可以根据如下API进行
QTextEdit textEdit = new QTextEdit();
// 转换成TextDocument
QTextDocument document = textEdit->document();
// 获取行数
int nRowcnt = document->lineCount();
文本框是QLineEdit还是QTextEdit?
1、获取文本内容:
如果是QLineEdit调用text()即可,如果是QTextEdit可调用 toPlainText()
QString qsText = lineEdit->text();
或QString qsText = textEdit->text();
2
label->setText( qsText );
错误代码都没有呢?估计是你定义的SLOT有问题。
你看看我写的这段代码吧,是选取QComboBox控件中的文本内容的。
intmain(intargc,charargv)
{
QApplicationapp(argc,argv);
QComboBoxcomboBox=newQComboBox;
QTextEdittextEdit=new QTextEdit;
QVBoxLayoutlayout=new QVBoxLayout;
layout->addWidget(textEdit);
layout->addWidget(comboBox);
comboBox->addItem(QObject::tr("ComboBoxItem01"));
comboBox->addItem(QObject::tr("ComboBoxItem02"));
comboBox-addItem(QObject::tr("ComboBoxItem03"));
QObject::connect(comboBox,SIGNAL(activated(QString)),textEdit,SLOT(insertPlainText(QString)));
QWidget mainWin;
mainWinsetLayout(layout);
mainWinresize(770,550);
mainWinshow();
returnappexec();
}
因为要对一段字符串进行多次处理,为了避免多次刷新UI带来的负担,肯定是先将数据读入内存,进行处理,然后一次性更新UI。
所以先调用QTextEdit的toPlainText将文本存入一个QString里。然后就有多种方法了。如果必须考虑行号的话,可以调用QString的split,将数据存入一个QStringList里,这样就可以得到一个QString的链表,每个节点一行,可以快速定位到任意一行。最后处理完是可以调用QStringList的join生产一个QString,再调用QTextEdit的setPlainText存入文本框。
PS:是\n还是\r\n试试就知道了,空格肯定是算的
以上就是关于如何让qtextedit动态加载内容全部的内容,包括:如何让qtextedit动态加载内容、在QT中,哪个控件可以实现命令与文本的交互,是QTextEdit吗可是具体如何实现呢应该参考哪几个函数呢、初学qt,做个记事本,怎么才能得到textedit内容的行数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)