詳細說明
此類擴展了 QTextEdit(只讀模式),添加了一些導航功能,以便用戶可以跟蹤超文本文檔中的鏈接。
如果您想為您的用戶提供可編輯的富文本編輯器,請使用 QTextEdit。如果您想要一個沒有超文本導航的文本瀏覽器,請使用 QTextEdit,并使用 QTextEdit::setReadOnly() 禁用編輯。如果您只需要顯示一小段富文本,請使用 QLabel。
文件來源和內容
QTextEdit 的內容是用 setHtml() 或 setPlainText() 設置的,但 QTextBrowser 也實現了 setSource() 函數,使得使用命名文檔作為源文本成為可能。在搜索路徑列表和當前文檔工廠的目錄中查找該名稱。
如果文檔名稱以錨點結尾(例如,“#anchor”),則文本瀏覽器會自動滾動到該位置(使用 scrollToAnchor())。當用戶單擊一個超鏈接時,瀏覽器將調用 setSource() 本身,并將鏈接的 href 值作為參數。您可以通過連接到 sourceChanged() 信號來跟蹤當前源。
導航
QTextBrowser 提供了backward() 和forward() 插槽,您可以使用它們來實現Back 和Forward 按鈕。 home() 槽將文本設置為顯示的第一個文檔。當用戶單擊錨點時會發出 anchorClicked() 信號。要覆蓋瀏覽器的默認導航行為,請調用 setSource() 函數以在連接到此信號的插槽中提供新的文檔文本。
如果要加載存儲在 Qt 資源系統中的文檔,請使用 qrc 作為 URL 中的方案來加載。例如,對于文檔資源路徑:/docs/index.html,使用 qrc:/docs/index.html 作為帶有 setSource() 的 URL。
API

#ifndef QTEXTBROWSER_H #define QTEXTBROWSER_H #include #include #include QT_REQUIRE_CONFIG(textbrowser); QT_BEGIN_NAMESPACE class QTextBrowserPrivate; class Q_WIDGETS_EXPORT QTextBrowser : public QTextEdit { Q_OBJECT Q_PROPERTY(QUrl source READ source WRITE setSource) Q_PROPERTY(QTextDocument::ResourceType sourceType READ sourceType) Q_OVERRIDE(bool modified SCRIPTABLE false) Q_OVERRIDE(bool readOnly DESIGNABLE false SCRIPTABLE false) Q_OVERRIDE(bool undoRedoEnabled DESIGNABLE false SCRIPTABLE false) Q_PROPERTY(QStringList searchPaths READ searchPaths WRITE setSearchPaths) Q_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks) Q_PROPERTY(bool openLinks READ openLinks WRITE setOpenLinks) public: //構造函數 explicit QTextBrowser(QWidget* parent = nullptr); //析構函數 virtual ~QTextBrowser(); //獲取url QUrl source() const; //獲取文檔類型 QTextDocument::ResourceType sourceType() const; //此屬性保存文本瀏覽器用于查找支持內容的搜索路徑 QStringList searchPaths() const; void setSearchPaths(const QStringList &paths); //當加載文檔時以及文檔中的每個圖像都會調用此函數。 type 表示要加載的資源的類型。 如果無法加載資源,則返回無效的 QVariant。 virtual QVariant loadResource(int type, const QUrl &name) override; //如果文本瀏覽器可以使用backward() 在文檔歷史記錄中后退,則返回true。 bool isBackwardAvailable() const; bool isForwardAvailable() const; //清空歷史 void clearHistory(); QString historyTitle(int) const; QUrl historyUrl(int) const; int backwardHistoryCount() const; int forwardHistoryCount() const; //打開外部鏈接 bool openExternalLinks() const; void setOpenExternalLinks(bool open); bool openLinks() const; void setOpenLinks(bool open); public Q_SLOTS: void setSource(const QUrl &name, QTextDocument::ResourceType type = QTextDocument::UnknownResource); virtual void backward(); virtual void forward(); virtual void home(); virtual void reload(); Q_SIGNALS: //當backward() 的可用性發生變化時,會發出此信號。 當用戶在家時,available 為 false(); 否則是真的。 void backwardAvailable(bool); //當用戶選擇但未激活文檔中的錨點時發出此信號。 錨點引用的 URL 在鏈接中傳遞。 void forwardAvailable(bool); //歷史變動 void historyChanged(); //源變動 void sourceChanged(const QUrl &); //高亮 void highlighted(const QUrl &); //A標簽點擊 void anchorClicked(const QUrl &); protected: //所有事件 bool event(QEvent *e) override; //按鍵壓下 virtual void keyPressEvent(QKeyEvent *ev) override; //鼠標移動 virtual void mouseMoveEvent(QMouseEvent *ev) override; //鼠標壓下 virtual void mousePressEvent(QMouseEvent *ev) override; //鼠標釋放 virtual void mouseReleaseEvent(QMouseEvent *ev) override; //焦點失去 virtual void focusOutEvent(QFocusEvent *ev) override; //焦點變化 virtual bool focusNextPrevChild(bool next) override; //繪制 virtual void paintEvent(QPaintEvent *e) override; //嘗試以指定類型在給定 url 加載文檔。 virtual void doSetSource(const QUrl &name, QTextDocument::ResourceType type = QTextDocument::UnknownResource); private: Q_DISABLE_COPY(QTextBrowser) Q_DECLARE_PRIVATE(QTextBrowser) Q_PRIVATE_SLOT(d_func(), void _q_documentModified()) Q_PRIVATE_SLOT(d_func(), void _q_activateAnchor(const QString &)) Q_PRIVATE_SLOT(d_func(), void _q_highlightLink(const QString &)) }; QT_END_NAMESPACE #endif // QTEXTBROWSER_H
Qt
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。