[英]Moving a widget inside a layout C++ QT
我在另一個小部件中移動小部件時遇到問題:
這可能很簡單,但我無法理解:
我的主要小部件在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
}
}
}
}
這一行影響了小部件 anchors.centerIn: parent 的位置
從 QML 文件中刪除它修復了我的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.