Use QQuickWidget instead of QQuickView to avoid displacement bugs on Windows and Linux

This commit is contained in:
Felix Kauselmann 2018-05-25 18:48:43 +02:00
parent 663795d015
commit 02eda8eeb5
8 changed files with 24 additions and 26 deletions

View File

@ -262,7 +262,7 @@ TRANSLATIONS = yacreaderlibrary_es.ts \
yacreaderlibrary_source.ts
#QML/GridView
QT += quick qml
QT += quick qml quickwidgets
HEADERS += grid_comics_view.h \
comics_view_transition.h

View File

@ -6,6 +6,7 @@
#include "QsLog.h"
#include <QtQuick>
#include <QQuickWidget>
ComicsView::ComicsView(QWidget *parent) :
QWidget(parent),model(NULL),comicDB(nullptr)

View File

@ -10,7 +10,7 @@ class QSplitter;
class ComicFlowWidget;
class QToolBar;
class ComicModel;
class QQuickView;
class QQuickWidget;
class ComicsView : public QWidget
{
@ -55,7 +55,7 @@ protected:
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
QQuickView *view;
QQuickWidget *view;
QWidget *container;
ComicDB *comicDB;

View File

@ -1,6 +1,7 @@
#include "grid_comics_view.h"
#include <QtQuick>
#include <QQuickWidget>
#include <QtWidgets>
#include "comic.h"
@ -40,21 +41,20 @@ GridComicsView::GridComicsView(QWidget *parent) :
qmlRegisterType<ComicDB>("com.yacreader.ComicDB",1,0,"ComicDB");
qmlRegisterType<ComicInfo>("com.yacreader.ComicInfo",1,0,"ComicInfo");
view = new QQuickView();
view = new QQuickWidget(this);
view->setResizeMode(QQuickWidget::SizeRootObjectToView);
connect(
view, &QQuickView::statusChanged,
[=] (QQuickView::Status status)
view, &QQuickWidget::statusChanged,
[=] (QQuickWidget::Status status)
{
if (status == QQuickView::Error)
if (status == QQuickWidget::Error)
{
QLOG_ERROR() << view->errors();
}
}
);
container = QWidget::createWindowContainer(view, this);
container->setMinimumSize(200, 200);
container->setFocusPolicy(Qt::TabFocus);
//view->setFocusPolicy(Qt::TabFocus);
selectionHelper = new YACReaderComicsSelectionHelper(this);
connect(selectionHelper, &YACReaderComicsSelectionHelper::selectionChanged, this, &GridComicsView::dummyUpdater);
@ -183,7 +183,7 @@ GridComicsView::GridComicsView(QWidget *parent) :
setShowMarks(true);//TODO save this in settings
QVBoxLayout * l = new QVBoxLayout;
l->addWidget(container);
l->addWidget(view);
this->setLayout(l);
setContentsMargins(0,0,0,0);

View File

@ -10,8 +10,7 @@
class QAbstractListModel;
class QItemSelectionModel;
class QQuickView;
class QQuickView;
class QQuickWidget;
class YACReaderToolBarStretch;
class YACReaderComicsSelectionHelper;

View File

@ -1,6 +1,7 @@
#include "info_comics_view.h"
#include <QtQuick>
#include <QQuickWidget>
#include "comic.h"
#include "comic_files_manager.h"
@ -18,21 +19,20 @@ InfoComicsView::InfoComicsView(QWidget *parent)
qmlRegisterType<ComicDB>("com.yacreader.ComicDB",1,0,"ComicDB");
qmlRegisterType<ComicInfo>("com.yacreader.ComicInfo",1,0,"ComicInfo");
view = new QQuickView();
view = new QQuickWidget();
view->setResizeMode(QQuickWidget::SizeRootObjectToView);
connect(
view, &QQuickView::statusChanged,
[=] (QQuickView::Status status)
view, &QQuickWidget::statusChanged,
[=] (QQuickWidget::Status status)
{
if (status == QQuickView::Error)
if (status == QQuickWidget::Error)
{
QLOG_ERROR() << view->errors();
}
}
);
container = QWidget::createWindowContainer(view, this);
container->setFocusPolicy(Qt::StrongFocus);
//container->setFocusPolicy(Qt::StrongFocus);
QQmlContext *ctxt = view->rootContext();
@ -95,7 +95,7 @@ InfoComicsView::InfoComicsView(QWidget *parent)
comicInfoHelper = new YACReaderComicInfoHelper(this);
QVBoxLayout * l = new QVBoxLayout;
l->addWidget(container);
l->addWidget(view);
this->setLayout(l);
setContentsMargins(0,0,0,0);

View File

@ -12,7 +12,7 @@ import com.yacreader.ComicInfo 1.0
import com.yacreader.ComicDB 1.0
SplitView {
anchors.fill: parent
//anchors.fill: parent
orientation: Qt.Horizontal
handleDelegate:Rectangle {
width: 1
@ -827,5 +827,3 @@ Rectangle {
}
}
}

View File

@ -11,8 +11,8 @@ Rectangle {
color: infoBackgroundColor
width: parent.width
height: parent.height
//width: parent.width
//height: parent.height
anchors.margins: 0
FlowView {