QWidgetAction通过接口方式继承自QAction,可以用于将自定义的QWidget 窗口插入到QMenu中,但是如果在自定义的 QWidget 中使用 QLineEdit 输入英文正常,却无法输入中文,解决办法是在显示窗口后激活此窗口 this->activateWindow();
下面是简单的使用用例:
点击pButton按钮弹出一个菜单里面是一个自定义的 CMyWidget 窗口菜单;
QToolButton*pButton = new QToolButton();
CMyWidget* pMyWidget = new CMyWidget(this);
QWidgetAction *pWdtAction = new QWidgetAction(this);
pWdtAction->setDefaultWidget(pMyWidget);
QMenu* pMenu = new QMenu(this);
pMenu->addAction(pWdtAction);
pButton->setMenu(pMenu);
class CMyWidget : public QWidget
{
Q_OBJECT
public:
CMyWidget(QWidget *parent=0);
~CMyWidget();
public:
void showEvent(QShowEvent *);
};
void CMyWidget::showEvent(QShowEvent *e)
{
this->activateWindow();//在显示窗口后激活此窗口
}