2010-12-19 87 views
2

我想實現一個簡單的對話框來編輯代碼的一部分。我使用基於QPlainTextEdit的this。但是,我無法將標籤插入代碼文本。主要原因可能是我將代碼編輯器顯示爲對話框,如代碼中所示。當我按Tab鍵時,對話框關閉然後重新打開。QPlainTextEdit Qt代碼編輯器如何選項代碼

CodeEditor* editor = new CodeEditor(this); 
editor->setWindowFlags(Qt::Dialog); 
editor->setMinimumSize(400, 400); 
editor->show(); 

回答

4

謝謝你們,

我解決了這個問題,它完全是關於我沒有在這個問題提的部分。此代碼是qtpropertybrowser代碼庫的一部分。我試圖添加一個屬性編輯器,它將打開我在問題中指出的代碼編輯小部件。當我鑽取qt屬性代碼庫時,我發現tab鍵被忽略,因爲它被eventFilter過濾掉了。當我改變這部分。我解決了這個問題。

但是,我無法解決編輯器關閉並重新打開的問題。它變得如此之快。並且錯誤消息如下輸出QWidget :: setTabOrder:'first'和'second'必須位於同一個窗口中。

0

嘗試使用Qt::Window代替Qt::Dialog和使用QWidget::setWindowModality()使其應用程序模式。

+0

這不起作用。當我點擊標籤按鈕時,編輯器關閉並重新打開。它變得如此之快。並且輸出錯誤消息如下QWidget :: setTabOrder:'first'和'second'必須在同一個窗口中 – Oki 2010-12-21 18:20:59

0

我將編輯器嵌入到QDialog中,並帶有OK和Cancel按鈕。另外,請確保QPlainTextEdit :: tabChangesFocus()爲false。

+0

這不起作用。當我點擊標籤按鈕時,編輯器關閉並重新打開。它變得如此之快。並且輸出錯誤消息如下:QWidget :: setTabOrder:'first'和'second'必須位於同一個窗口中 – Oki 2010-12-21 18:21:23

+0

奇怪。所以setTabChangesFocus(false)沒有效果?你在哪個平臺上? – 2010-12-21 19:11:02