有什么区别QTextEdit
和QPlainTextEdit
,为什么使用一个而不是另一个?
我正在编写一个文本编辑器作为学习Qt5的练习,现在我想知道是否使用QTextEdit
或QPlainTextEdit
.到目前为止,我只发现你可以显示图像QTextEdit
,但除此之外,它们看起来与我相似.我的文本编辑器应该支持一些基本的语法高亮(可能使用textChanged()
信号),但这几乎与需求一样.
谷歌搜索"QTextEdit vs QPlainTextEdit"和"QTextEdit与QPlainTextEdit相比"并没有给我任何可以比较两个类的结果.
我正在编写从QTextEdit
类派生的复杂的富文本编辑器.它必须能够插入,调整大小并将各种格式应用于嵌入式表.
我找到了设置列宽度的函数(setColumnWidthConstraints).但没有人可以change _rows_ heights
.
有没有办法实现这个目标?
示例代码:
void CustomTextEdit::insertTable (int rows_cnt, int columns_cnt)
{
QTextCursor cursor = textCursor ();
QTextTableFormat table_format;
table_format.setCellPadding (5);
// TODO: This call just changed the frame border height, not table itself.
//table_format.setHeight (50);
// Setup columns widths - all is working perfectly.
QVector <QTextLength> col_widths;
for (int i = 0; i < columns_cnt; ++i)
col_widths << QTextLength (QTextLength::PercentageLength, 100.0 / columns_cnt);
table_format.setColumnWidthConstraints (col_widths);
// ...But there is no similar function …
Run Code Online (Sandbox Code Playgroud) 我有一个QTextEdit
显示文本的框,我希望能够在同一个QTextEdit
框中为不同的文本行设置文本颜色.(即第1行可能是红色,第2行可能是黑色等)
这可能在QTextEdit
盒子里吗?如果没有,获得此行为的最简单方法是什么?
谢谢.
我认为这是一个非常简单的问题,但是当我复制图像时,我无法将其粘贴到QTextEdit中?粘贴无效!我也想知道如何拖放图片.
顺便说一下,我使用以下代码将图片插入QTextEdit:
QTextEdit *textEditor = new QTextEdit(0);
QTextDocumentFragment fragment;
fragment = QTextDocumentFragment::fromHtml("<img src='C:\\aaa.jpg'>");
textEditor->textCursor().insertFragment(fragment);
textEditor->setVisible(true);
Run Code Online (Sandbox Code Playgroud)
推荐吗?你怎么做这个操作?
我只需要知道如何在QTextEdit中更改Qt中的选项卡大小.我的Google和stackoverflow搜索返回null.提前致谢.
我使用QTextEdit进行输入.但我想调整盒子的高度.我可以根据我想要一次看到的行数来设置高度吗?
有没有办法让链接可以点击QTextEdit
?
我知道我可以使用QTextBrowser
和连接anchorClicked
但我宁愿在一个小部件中保持编辑和查看,并且当我将小部件设置为只读模式时具有可单击的链接.
这是可能的还是我坚持在堆栈中有两个单独的小部件并在它们之间切换?
我有一个QTextEdit充当"显示器"(可编辑为假).它显示的文字是自动换行的.现在我希望设置此文本框的高度,以便文本完全适合(同时也尊重最大高度).
基本上布局下面的小部件(在相同的垂直布局中)应该获得尽可能多的空间.
如何才能最轻松地实现这一目标?
我试图在包含几个QT小部件的表单中使用QTextEdit小部件.表单本身位于QScrollArea内,该窗口是窗口的中心窗口小部件.我的意图是,任何必要的滚动都将在主QScrollArea中进行(而不是在任何小部件内部),并且内部的任何小部件将自动调整其高度以保存其内容.
我试图用QTextEdit实现高度的自动调整,但遇到了一个奇怪的问题.我创建了一个QTextEdit的子类,并重新实现了sizeHint(),如下所示:
QSize OperationEditor::sizeHint() const {
QSize sizehint = QTextBrowser::sizeHint();
sizehint.setHeight(this->fitted_height);
return sizehint;
}
Run Code Online (Sandbox Code Playgroud)
this-> fitted_height通过连接到QTextEdit的"contentsChanged()"信号的插槽保持最新:
void OperationEditor::fitHeightToDocument() {
this->document()->setTextWidth(this->viewport()->width());
QSize document_size(this->document()->size().toSize());
this->fitted_height = document_size.height();
this->updateGeometry();
}
Run Code Online (Sandbox Code Playgroud)
QTextEdit子类的大小策略是:
this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
Run Code Online (Sandbox Code Playgroud)
这是我的问题:
随着QTextEdit逐渐调整大小以填充窗口,无论sizeHint()返回什么高度,它都会停止变大并开始在QTextEdit中滚动.如果我最初让sizeHint()返回一些大的常数,那么QTextEdit非常大,并且很好地包含在外部QScrollArea中,正如人们所期望的那样.但是,如果sizeHint逐渐调整QTextEdit的大小而不是仅仅让它开始变大,那么当它填充当前窗口并开始滚动而不是增长时,它会突然出现.
我已经跟踪过这个问题,无论我的sizeHint()返回什么,它都不会将QTextEdit的大小调整为大于从QAbstractScrollArea继承的maximumViewportSize()返回的值.请注意,这与viewport() - > maximumSize()的数量不同.我无法弄清楚如何设置该值.
查看QT的源代码,maximumViewportSize()返回"视口的大小,好像滚动条没有有效的滚动范围".此值基本上计算为窗口小部件的当前大小减去(2*frameWidth +边距)加上任何滚动条宽度/高度.这对我来说没有多大意义,而且我不清楚为什么这个数字会以某种方式用于取代子类的sizeHint()实现.而且,单个"frameWidth"整数用于计算宽度和高度似乎很奇怪.
任何人都可以对此有所了解吗?我怀疑我对QT布局引擎的不了解是这里的责任.
编辑:在最初发布之后,我有想法重新实现maximumViewportSize()以返回与sizeHint()相同的东西.不幸的是,这不起作用,因为我仍然有同样的问题.
有像textEdit->textCursor()->selectionStart()
和的功能textEdit->textCursor()->selectionEnd()
,但没有功能setSelectionStart
,setSelectionEnd
.
有没有办法手动选择文本的某些部分?