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