以下代码用于使用QGraphicsProxyWidget将QWidget添加到QGraphicsScene中:
QWidget *inter_form = new MapWidgetInteractorForm(0);
inter_form->setAttribute(Qt::WA_DeleteOnClose);
inter_form->setWindowOpacity(0.8);
QGraphicsProxyWidget *item = view->scene()->addWidget(inter_form);
item->setFlag(QGraphicsItem::ItemIsMovable);
item->setFlag(QGraphicsItem::ItemIsFocusable);
item->setFlag(QGraphicsItem::ItemIsPanel);
item->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
item->setZValue(65001.);
item->setPos(0, 0);
item->show();
item->setFocus();
但是,小部件无法获得键盘焦点。只有当窗口被重新激活时,或者通过用户激活另一个应用程序窗口然后返回到应用程序,或者通过切换到另一个选项卡页面并返回(QGraphicsView被放置在选项卡中),然后窗口小部件获得键盘焦点并且工作一般!有什么问题?
我使用的是Qt 4.8.0。