Перемещение виджета внутри макета C ++ QT - PullRequest
0 голосов
/ 19 января 2020

У меня проблемы с перемещением виджета в другой виджет:

Это может быть просто, но я просто не могу его получить:

  • Мой основной виджет находится в QHBoxlayout

  • Мой дочерний виджет находится в макете основного виджета (тумблер выделен желтым цветом на пи c) который мне нужно переместить

  • Мне нужно переместить дочерний виджет quickWidgettum, который является просто тумблером в родительском виджете.

  • Родительский виджет mstrWnd - это все остальное на экране.

Здесь код C ++:

mstrWnd = new QWidget;                                                      
        mstrWnd->setObjectName(STR_MASTER_WINDOW_NAME);                                 
mstrWnd->setWindowTitle(getSettingI(MSTR_APP_TITLE));                       
        mstrWnd->setGeometry(getSettingI(MSTR_APP_X).toInt(),                       
            getSettingI(MSTR_APP_Y).toInt(),                                        
            getSettingI(MSTR_APP_WIDTH).toInt(),                                    
            getSettingI(MSTR_APP_HEIGHT).toInt());                                  
        mstrWnd->setWindowFlags(Qt::FramelessWindowHint | Qt::Window);
        mstrWnd->setWindowState(Qt::WindowFullScreen);

        QHBoxLayout* laos = new QHBoxLayout();
        mstrWnd->setLayout(laos);

        QQuickView* quickView = new QQuickView(QUrl::fromLocalFile(QDir::currentPath() + "\\Resources\\videos\\aos.qml"));
quickView->setResizeMode(QQuickView::SizeRootObjectToView);
quickWidgettum = new QWidget;
        quickWidgettum = QWidget::createWindowContainer(quickView);

        laos->addWidget(quickWidgettum);

А вот часть QML:

import QtQuick 2.12
import QtQuick.Window 2.2
import QtQuick.Controls 2.12
Rectangle {
    width: frame.implicitWidth + 10
    height: frame.implicitHeight + 10

    function formatText(count, modelData) {
        var data = count === 12 ? modelData + 1 : modelData;
        return data.toString().length < 2 ? "0" + data : data;
    }

    FontMetrics {
        id: fontMetrics
    }

    Component {
        id: delegateComponent

        Label {
            text: formatText(Tumbler.tumbler.count, modelData)
            opacity: 1.0 - Math.abs(Tumbler.displacement) / (Tumbler.tumbler.visibleItemCount / 2)
            horizontalAlignment: Text.AlignHCenter
            verticalAlignment: Text.AlignVCenter
            font.pixelSize: fontMetrics.font.pixelSize * 1.25
        }
    }

    Frame {
        id: frame
        padding: 0
        anchors.centerIn: parent

        Row {
            id: row

            Tumbler {
                id: hoursTumbler
                model: 12
                delegate: delegateComponent
            }

            Tumbler {
                id: minutesTumbler
                model: 60
                delegate: delegateComponent
            }

            Tumbler {
                id: amPmTumbler
                model: ["AM", "PM"]
                delegate: delegateComponent
            }
        }
    }
}

1 Ответ

0 голосов
/ 22 января 2020

Эта строка влияла на положение виджета anchors.centerIn: parent

Удаление его из файла QML решило мою проблему

...