简体   繁体   English

如何将 QTextDocument 作为小部件?

[英]How to make a QTextDocument as a widget?

I need to build a widget, which bases on QTextDocument .我需要构建一个基于QTextDocument的小部件。

MyWidget.h我的小部件.h

class MyWidget: public QFrame
{
public:
   explicit MyWidget( QWidget *p_parent );

private:
   QTextDocument m_textDocument;
};

MyWidget.cpp我的Widget.cpp

MyWidget::MyWidget( QWidget *p_parent ) : QFrame( p_parent )
{
  QVBoxLayout *layout = new QVBoxLayout( this );
  layout->setMargin( 0 );
  layout->setSpacing( 0 );

  m_textDocument = new QTextDocument( this );
  layout->addWidget( m_textDocument );   // does not work
  layout->addLayout(m_textDocument->documentLayout());  // I have tried this, but incompatible
}

I can not addWidget because QTextDocument is an object.我不能addWidget因为QTextDocument是一个对象。 How can I do to build my widget?我该如何构建我的小部件?

You don't use a QTextDocument as a widget, because a Document is the idea in memory of what a document is, it does not have a Graphicsl Representation.您不使用 QTextDocument 作为小部件,因为 Document 是内存中文档内容的idea ,它没有 Graphicsl 表示。

If you are looking for a Visual representation of a Document, you can use QTextEdit as follows:如果您正在寻找文档的可视化表示,您可以使用 QTextEdit,如下所示:

auto *textEdit = new QTextEdit(parent);
textEdit->setDocument(myTextDocument);
layout->addWidget(textEdit);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM