2

テキスト エディター (QTextPlainEdit) で文を完成させるための命題を含む、ある種のポップアップ ウィンドウを作成する必要があります。このウィンドウは、このアプリケーションのすべてのウィンドウの上にある必要があります。また、このポップアップが表示されたときに、テキスト エディターでの入力を中断してはなりません。このコンプリータを実装する QWidget のさまざまなタイプのフラグを試してみましたが、このコンプリータ ウィンドウが OS のすべてのウィンドウの上に配置されているか (このアプリケーションがアクティブでない場合でも)、テキスト エディターでの入力が中断されてメイン ウィンドウが作成されます。いつでもアクティブではありません。

コンプリータ ウィジェットにはどのフラグを使用すればよいですか?

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

私が知る限り、彼らはあなたの状況に関連する可能性のある 2 つのことを行います。1 つは、ポップアップ ウィジェットに設定するフラグです。

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

もう 1 つはポップアップ ウィジェットのカスタム イベント フィルターで、ほとんどのキー押下イベントをエディター ウィジェットに転送し、Enter または Escape でオートコンプリートを閉じます。

于 2013-08-21T20:17:53.643 に答える