私が持っているポップアップメニューに行編集フィールドが欲しいです。私は基本的に、ユーザーがいくつかの一般的なサイズのいずれかを選択できるようにしていますが、メニューの最後のエントリとしてカスタム サイズを入力できるようにしたいと考えています。
だから私はこのようなものを持っています(より大きなコードから切り取った、new_menuは興味のあるメニューです):
QWidget *widget = new QWidget(new_menu);
QHBoxLayout *layout = new QHBoxLayout;
QLineEdit* le = new QLineEdit;
le->setPlaceholderText("Custom");
le->setFixedWidth(100);
ayout->addWidget(le);
widget->setLayout(layout);
QWidgetAction* wa = new QWidgetAction(new_menu);
wa->setActionGroup(group);
wa->setDefaultWidget(widget);
new_menu->addAction(wa);
connect(le, SIGNAL(returnPressed()), this, SLOT(leslot()));
これはうまく機能LineEdit
し、メニューの中央にうまく表示され、プレースホルダーテキストがあり、クリックして編集できます. ただし、 で Enterキーを押すと、信号が発せられ、メニューがリストの他のアクションのいずれかで信号を発するtextBox
ため、せいぜい構成を 2 回変更し、最悪の場合は問題が発生します。returnPressed
triggered
LineEdit
さらに、 (メニューにはまだありますが、編集可能領域にはありません)の端をクリックすると、メニューはQWidgetAction
それに関連付けられたトリガー信号を発しますが、これは私が望んでいるものではありません。
2 つの質問があります
。1) 希望どおりに仕事に復帰できますか。ヒット時にメニューが閉じても問題ありませんが、別のアクションを発行することもできません。2)がクリック
されたときにアクションをまったく発行しないようにすることはできますか?lineEdit