C++ QPlainTextEdit上的Qt代码编辑器如何标记代码

C++ QPlainTextEdit上的Qt代码编辑器如何标记代码,c++,qt,text-editor,C++,Qt,Text Editor,我试图实现一个简单的对话框来编辑部分代码。我使用的是基于QPlainTextEdit的。但是,我无法在代码文本中插入制表符。主要原因可能是我将代码编辑器显示为对话框,如代码中所示。当我按Tab按钮时,对话框关闭,然后重新打开 CodeEditor* editor = new CodeEditor(this); editor->setWindowFlags(Qt::Dialog); editor->setMinimumSize(400, 400); editor->show();

我试图实现一个简单的对话框来编辑部分代码。我使用的是基于QPlainTextEdit的。但是,我无法在代码文本中插入制表符。主要原因可能是我将代码编辑器显示为对话框,如代码中所示。当我按Tab按钮时,对话框关闭,然后重新打开

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

尝试使用
Qt::Window
而不是
Qt::Dialog
,并通过使用
QWidget::setwindowmodula()
使其成为应用程序模式。我会将编辑器嵌入带有“确定”和“取消”按钮的QDialog中。另外,请确保QPlainTextEdit::tabChangesFocus()为false。

谢谢大家

我解决了这个问题,完全是关于我在问题中没有提到的部分。此代码是代码库的一部分。我正在尝试添加一个属性编辑器,它将打开我在问题中指出的代码编辑小部件。当我深入研究qt属性代码库时,我发现tab键被忽略了,因为它是由eventFilter过滤的。当我改变这部分。我解决了这个问题


但是,我无法解决编辑器关闭和重新打开的问题。它变得如此之快。和错误消息输出如下QWidget::setTabOrder:“first”和“second”必须在同一窗口中。

这不起作用。单击tab按钮时,编辑器将关闭并重新打开。它变得如此之快。和和错误消息输出如下QWidget::setTabOrder:“first”和“second”必须在同一个窗口中这不起作用。单击tab按钮时,编辑器将关闭并重新打开。它变得如此之快。并且错误消息输出如下:QWidget::setTabOrder:“first”和“second”必须在同一个窗口中。那么setTabChangesFocus(false)没有效果?你在哪个站台?