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();//在显示窗口后激活此窗口
}



