Ich stelle fest, dass QML's StatusBar-Typ nicht den SizeGrip wie QStatusBar enthält.QML-Statusleiste mit SizeGrip
Um eine Größenbeschränkung zu bekommen, musste ich stattdessen die QML in ein QMainWindow mit einer QStatusBar einbetten. Obwohl dies funktioniert, kompliziert es den Rest der App und es ist nicht wirklich das Design, nach dem ich bin.
Wäre es möglich, die QStatusBar direkt in QML durch Unterklassenbildung zu implementieren und wie würde QML den SizeGrip erkennen/verwenden können?
EDIT: ich versucht habe QQuickPaintedItem abzuleiten eine QStatusBar in QML zu versuchen und machen, aber bisher noch kein Glück gehabt. Im Renderaufruf wird ein Fehler ausgelöst: ASSERT-Fehler in QCoreApplication :: sendEvent: "Ereignisse können nicht an Objekte gesendet werden, die einem anderen Thread gehören. Aktueller Thread 399d3d8. Empfänger '' (vom Typ 'QStatusBar') wurde im Thread 8c9f00 erstellt." , Datei-Kernel \ qcoreapplication.cpp, Linie 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);
}
Ich habe die Frage mit meinem aktuellen Versuch, eine QML QStatusBar zu erstellen, aktualisiert. Dies ist hauptsächlich der Pfad, auf den ich mich konzentriere, da ich festgestellt habe, dass die Größenanpassung des Fensters nicht annähernd so glatt ist, wenn statt eines QSizeGrip in einem Fenster eine MouseArea verwendet wird. –