2010-09-10 147 views
1

我正在開發所見即所得的文檔編輯器。編輯器是圍繞Qt框架構建的,因爲Linux/KDE是它將運行的主要平臺。Qt WYSIWYG編輯器 - 不可編輯/生成的區域

我一直使用的QTextEdit控件到目前爲止,並已經得到了基本的文本編輯和格式但是我已經陷於停頓就如何落實以下要求:

的文件被分成多個級別的標題,並且頂部必須有一個自動生成的目錄。

您應該能夠爲文本段落(標題1,標題2,...,段落)選擇樣式,並且如果選擇標題樣式,則該行以段號爲前綴。

例如,包含文本「設計規範」與「標題3」樣式段落可能會顯示爲:

3.4.2設計規範

凡前綴節號'3.4.2'自動生成。節號應該隨着標題插入並在其上面移除而更新。用戶不應該能夠自己修改或刪除這個前綴。如果他們確實刪除了前綴,那麼該段落應該回到'段落'樣式,而不是保持標題。

由於標題被插入/修改/刪除,內容表應自動更新。用戶也不應該能夠修改或刪除目錄。

我被困在如何在編輯器中實現該功能。我正在考慮可能存儲不可編輯範圍的樹(範圍包括內容列表和每個前綴),並且每當光標位置/當前選擇發生變化時,我會將QTextEdit控件設置爲只讀,如果選擇重疊或光標位於範圍內。但是,在每次修改某些內容時,都需要保持所有這些範圍都是最新的(重新構建樹),這在一個所見即所得的編輯器中經常會發生。

我被困在如何繼續,我會很感激任何關於此事的建議。

+0

我可能能夠製作從QTextObjectInterface繼承的Table of Contents和段落前綴的對象。這至少會讓他們變得不可修改,但我不確定無法迴避。而且似乎沒有可能知道位置更改何時更新部分編號。 – Andrew 2010-09-10 16:09:22

回答