Qt弹出窗口作为完成器窗口

Qt弹出窗口作为完成器窗口,qt,popup,text-editor,Qt,Popup,Text Editor,我需要制作一个弹出窗口,其中包含在文本编辑器(QTextPlaineEdit)中完成句子的命题。此窗口需要位于此应用程序的所有窗口之上。此外,此弹出窗口出现时不得中断文本编辑器中的键入。我尝试了不同类型的标志用于QWidget,它实现了这个补足符,但我得到的只是,这个补足符窗口被放置在操作系统的所有窗口之上(即使这个应用程序未处于活动状态),或者它会中断文本编辑器中的键入,并使主窗口在任何时候都不处于活动状态 我应该为completer小部件使用什么标志?您可以尝试使用QWidget::setW

我需要制作一个弹出窗口,其中包含在文本编辑器(QTextPlaineEdit)中完成句子的命题。此窗口需要位于此应用程序的所有窗口之上。此外,此弹出窗口出现时不得中断文本编辑器中的键入。我尝试了不同类型的标志用于QWidget,它实现了这个补足符,但我得到的只是,这个补足符窗口被放置在操作系统的所有窗口之上(即使这个应用程序未处于活动状态),或者它会中断文本编辑器中的键入,并使主窗口在任何时候都不处于活动状态


我应该为completer小部件使用什么标志?

您可以尝试使用
QWidget::setWindowFlags(Qt::Window | Qt::FramelessWindowHint)
。 否则,您可以通过覆盖自动关闭行为,使用自定义版本的
Qt::Popup


您也可以尝试这样做:如果您将QTextPlaineEdit的父对象设置为completer的父对象,只要父对象没有布局(否则它将不会“浮动”)。Qt文档包含一个实现基于google的自动completer小部件的示例,如下所示:

据我所知,他们做的两件事可能与你的处境有关。一个是他们在弹出窗口小部件上设置的标志:

popup = new QTreeWidget;
popup->setWindowFlags(Qt::Popup);
popup->setFocusPolicy(Qt::NoFocus);
popup->setFocusProxy(parent);

另一个是弹出窗口小部件上的自定义事件过滤器,它将大多数按键事件转发到编辑器小部件,并在Enter或Escape时关闭自动完成器。

还有一个QCompleter,顺便说一句:)