Je remarque que le type StatusBar de QML n'inclut pas le SizeGrip comme le fait QStatusBar.QML StatusBar avec SizeGrip
Afin d'obtenir une prise de taille, j'ai dû à la place intégrer le QML dans un QMainWindow avec un QStatusBar. Bien que cela fonctionne, il complique le reste de l'application et ce n'est pas vraiment le design que je suis après.
Serait-il possible d'implémenter le QStatusBar directement dans QML en le sous-classant et comment QML pourrait-il reconnaître/utiliser le SizeGrip?
EDIT: Je ai essayé de tirer QQuickPaintedItem pour essayer de rendre une QStatusBar en QML, mais jusqu'à présent ne l'ai pas eu de chance. Une erreur est déclenchée dans l'appel render: Échec ASSERT dans QCoreApplication :: sendEvent: "Impossible d'envoyer des événements aux objets appartenant à un thread différent Le thread courant 399d3d8. Receiver '' (de type 'QStatusBar') a été créé dans le thread 8c9f00" , noyau fichier \ qcoreapplication.cpp, ligne 553
.h
class WindowStatusBar : public QQuickPaintedItem
{
Q_OBJECT
public:
explicit WindowStatusBar(QQuickItem *parent = 0);
virtual ~WindowStatusBar();
void paint(QPainter *painter);
protected:
QStatusBar *statusBar_;
};
cpp
WindowStatusBar::WindowStatusBar(QQuickItem *parent)
: QQuickPaintedItem(parent)
, statusBar_(NULL)
{
setOpaquePainting(true);
setAcceptHoverEvents(true);
setAcceptedMouseButtons(Qt::AllButtons);
statusBar_ = new QStatusBar;
}
WindowStatusBar::~WindowStatusBar()
{
delete statusBar_;
}
void WindowStatusBar::paint(QPainter *painter)
{
statusBar_->render(painter, QPoint(), QRegion(),
QStatusBar::DrawWindowBackground | QStatusBar::DrawChildren);
}
J'ai mis à jour la question avec ma tentative actuelle de création d'un QStatusBar QML. C'est principalement le chemin sur lequel je me concentre parce que je trouvais que le redimensionnement de la fenêtre n'est pas aussi lisse en utilisant un MouseArea au lieu d'un QSizeGrip dans une fenêtre. –