QComboBox
テキストエディタを作成していますが、をに入れたいと思いQMenu
ます。そのようなことを処理するメソッドは、内部に見つかりませんでしQMenu
た。最も近いのはQMenu::addAction()
です。私はこのハードルを回避することを考えていました。
ありがとう!
サブクラス化してから、メニューをQWidgetAction
呼び出すだけです。addAction
ラベル付きのスピンボックスアクションのサンプルコード
class SpinBoxAction : public QWidgetAction {
public:
SpinBoxAction (const QString& title) :
QWidgetAction (NULL) {
QWidget* pWidget = new QWidget (NULL);
QHBoxLayout* pLayout = new QHBoxLayout();
QLabel* pLabel = new QLabel (title); //bug fixed here, pointer was missing
pLayout->addWidget (pLabel);
pSpinBox = new QSpinBox(NULL);
pLayout->addWidget (pSpinBox);
pWidget->setLayout (pLayout);
setDefaultWidget(pWidget);
}
QSpinBox * spinBox () {
return pSpinBox;
}
private:
QSpinBox * pSpinBox;
};
作成してメニューに追加するだけです
SpinBoxAction * spinBoxAction = new SpinBoxAction(tr("Action Title"));
// make a connection
connect(spinBoxAction ->spinBox(), SIGNAL(valueChanged(int)),
this, SLOT(spinboxValueChanged(int)));
// add it to your menu
menu->addAction(spinBoxAction);
QWidgetAction
をQAction
含むQWidget
です。これを使用して、をカプセル化し、QComboBox
を介してメニューに追加できますQMenu::addAction
。
いつでもQWidget
またはQFrame
をメニューウィジェットとして使用し、その上に配置して、内部 QHBoxLayout
に挿入することができます。QWidgets