我正在面对集成在QQuickPaintedItem类中的Widget的一个问题。当我将Widget集成到QQuickPaintedItem中时,QWidget :: isVisible将返回false。如果我试图设置QWidget :: setVisible(true),那么它会打开另一个窗口,我不想在我的场景中使用它。 有没有什么办法让QWidget :: isVisible返回true,这样我的子窗口小部件(在我的实际场景中,我们有5层的父子层次结构)也能正常工作,当我说QWidget :: show()时?当QWidget集成在QQuickPaintedItem中时,setVisible返回false
我已经创建了与下图类似的场景。
头文件
class MyItem: public QQuickPaintedItem{
Q_OBJECT
public:
explicit MyItem(QQuickItem *parent = 0);
void paint(QPainter *painter);
~MyItem();
Q_INVOKABLE void initButton();
protected:
virtual void mousePressEvent(QMouseEvent* event);
private:
QPushButton* bp;
};
源文件:
MyItem::MyItem(QQuickItem *parent)
: QQuickPaintedItem(parent)
{
bp = new QPushButton("Hello");
}
MyItem::~MyItem()
{
delete bp;
}
void MyItem::paint(QPainter *painter){
bp->render(painter, QPoint(), QRegion(), QPushButton::DrawWindowBackground | QPushButton::DrawChildren);
}
void MyItem::mousePressEvent(QMouseEvent* event)
{
qDebug() << Q_FUNC_INFO << bp->isVisible();
}
感谢提前的帮助... !!!