我正在面對集成在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();
}
感謝提前的幫助... !!!