2

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

我应该为完成器小部件使用哪些标志?

4

2 回答 2

1

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

你也可以试试这个:如果你将 QTextPlainEdit 的父级设置为完成者的父级,它应该做你想做的事情,前提是父级没有布局(否则它不会“浮动”)。

于 2013-04-05T09:21:41.257 回答
1

Qt 文档包含一个实现基于 google 的自动完成小部件的示例,此处为:http: //qt-project.org/doc/qt-4.8/network-googlesuggest.html

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

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

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

于 2013-08-21T20:17:53.643 回答