我正在创建一个文本编辑器,想在 QMenu
中添加 QComboBox
。但是我没有找到 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);
您可以始终使用 QWidget
或 QFrame
作为菜单小部件,然后在其上放置一个 QHBoxLayout
,并将您的 QWidgets
插入其中。
SpinBoxAction (const QString& title) : QWidgetAction (NULL) {}
。 - W.K.SNULL
作为参数调用父类构造函数的简单操作。https://dev59.com/tXVD5IYBdhLWcg3wAWkO - pnezis