【问题标题】:Moving a widget inside a layout C++ QT在布局 C++ QT 中移动小部件
【发布时间】:2020-05-05 16:21:54
【问题描述】:

我在将一个小部件移动到另一个小部件中时遇到问题:

这可能很简单,但我就是不明白:

  • 我的主要小部件位于QHBoxlayout

  • 我的子小部件位于主小部件的布局内(图中以黄色突出显示的不倒翁),我需要重新定位

  • 我需要移动子小部件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
            }
        }
    }
}

【问题讨论】:

标签: c++ qt layout widget qml


【解决方案1】:

这条线影响了小部件的位置 anchors.centerIn: parent

从 QML 文件中删除它解决了我的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 2013-02-12
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多