我经常想使用QTextEdit作为显示正在写入流的内容的快速方法.也就是说,我不想写QTextStream(stdout),而是想做类似的事情:
QTextEdit qte;
QTextStream out(qte);
Run Code Online (Sandbox Code Playgroud)
如果我在写入附加到QString的QTextStream后发出信号,我可以做类似的事情.
问题是我希望界面与我流式传输时的界面相同stdout
:
out << some data << endl;
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一目标的任何想法?
提前致谢.
我正在写一个小编辑.我想更改QTextEdit的默认行为,它会在Tab
命中时插入标签.相反,我想放4个空格.这样做的推荐方法是什么?我虽然关于子类化keyPressedEvent
,但也许有更好的方法?
我在Qt中有以下示例,其中我尝试覆盖QTextEdit的子类的keyPressEvent,但是给了我"txt :: keyPressEvent(QKeyEvent*)的多重定义",我无法弄清楚原因:
//txt.h
#ifndef TXT_H
#define TXT_H
#include <QTextEdit>
class txt : public QTextEdit
{
Q_OBJECT
public:
txt(QWidget *parent = 0);
signals:
void keyPressEvent(QKeyEvent *e);
public slots:
};
#endif // TXT_H
//txt.cpp
#include "txt.h"
txt::txt(QWidget *parent) :
QTextEdit(parent)
{
}
void txt::keyPressEvent(QKeyEvent *e){
//do stuff with the key event
}
//main.cpp
#include <QtGui/QApplication>
#include "txt.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
txt w;
w.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
我试着在txt.h中声明QTextEdit并且只在cpp中#include它,但这给了我一些其他错误(可能是因为我需要头文件中的类,因为我正在对它进行子类化?)
无论如何,我做错了什么?
编辑:我也尝试了另一个类(QLabel),现在我得到了同样的错误......
在QLineEdit
,有一个textEdit()
信号,只有在用户更改文本时才会发出,但在您通话时则不会发出setText()
,
那相当于QTextEdit
什么呢?我只看到一个textChanged()
信号,文档说明它会在文本文档发生变化时发出.
编辑
我想实现自动保存功能,当然还有QTimer,
因此,当您开始编辑文档时,计时器会启动,当超时时,我会将文本保存在窗口小部件中.
如何在 中设置锚点QTextEdit
?
似乎有一种滚动到锚点的方法,但没有任何方法可以设置实际锚点。
所以我尝试了这个,但它不起作用。
mTextEdit->setHtml("some html stuff");
mTextEdit->append("<a href=\"#word\">word</a>");
mTextEdit->scrollToAnchor("word");
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我一直在寻找一天,但没有找到答案.此主题如何从QTextEdit或QPlainTextEdit小部件获取当前可见的文本?仅回答如何获取小部件中包含的所有文本.
在我的情况下,我有一个带有大量文本的QTextWidget.远远超过任何时候都可以展示的.我想回应可见文本的变化,然后采取一些行动.
当用户滚动文本区域或将新文本添加到窗口小部件时,我想对可见文本执行一些操作.我可以轻松连接到QTextEdit :: verticalScrollBar()的信号但是如何查找可见文本是什么?
到目前为止我有这个,但在阅读了文档的页面和页面后,似乎QTextEdit没有任何方法让你知道它的可见区域中的文本是什么.
void MyProject::on_textEdit_scrollBar_valueChanged(int value)
{
QStringList visibleText = // how do I do this?
}
Run Code Online (Sandbox Code Playgroud) 我试图将文本编辑器的内容保存为pdf文件.文本编辑器是使用PyQt制作的(我没有制作文本编辑器),我从这里获得了文本编辑器的代码.我对编辑器做了一些更改,但这不会成为问题.
经过一些初步的研究后,我发现我需要使用ReportLab来发布一个pdf文件.但我找不到办法做到这一点.
有谁知道如何实现这一目标?
我有一个QPlainTextEdit,我在打开大文件时为它构建了一个进度对话框.我想通过使用QTextCursor.insertText一次添加一行文本,而不是使用setText.问题是,当我这样做时,我可以撤消添加的每一行......有没有办法清除撤消历史记录?
我有一个QTextEdit
通过使用它的内容被编程的内容QTextEdit.textCursor
.
我的计划是让用户检查填充的信息QTextEdit
并在必要时进行编辑,然后再使用打印成PDF文件QPrinter
.
但是,我想在用户进行编辑之前更改整个内容的字体大小.我不会使用多种字体大小,所以我只需要为内容设置一个字体大小.
我尝试QTextEdit
过在QTextEdit.setFontSize(16)
操作前后使用,但似乎没有任何效果.
如何更改内容的字体大小textCursor
?
我正在寻找一种方式来改变QTextCharFormat
一个的QTextEdit
的QTextBlock
不触发除了撤销命令。让我解释:
所述QTextCharFormat
的QTextBlock
可以通过使用容易地改变QTextCursor::setBlockCharFormat()
方法。假设我们有一个QTextEdit
被调用的对象,myTextEdit
它的可见光标在我们要更改的文本块内,我们可以QTextCharFormat
像这样更改文本块:
text_cursor = myTextEdit.textCursor()
text_cursor.setBlockCharFormat(someNewCharFormat)
Run Code Online (Sandbox Code Playgroud)
上面的代码可以正常工作,但是还会向myTextEdit
撤消堆栈中添加撤消命令。对于我自己而言,我希望能够改变QTextCharFormat
的QTextBlock
不添加撤销命令到QTextEdit
的撤消堆栈。
我考虑使用该QTextDocument::setUndoRedoEnabled()
方法暂时禁用撤消/重做系统,但是该方法也清除了撤消堆栈,我不想这样做。我还寻找了其他方法来更改撤消/重做系统的行为,但是我还没有找到一种方法来使其暂时忽略更改。我只是想在QTextEdit
没有撤消/重做系统注册更改的情况下对a 进行更改。
任何提示或建议,不胜感激。谢谢!