gpt4 book ai didi

qt - 如何在 QtQuick Controls 2 中将对话框置于屏幕中央?

转载 作者:行者123 更新时间:2023-12-02 05:29:38 25 4
gpt4 key购买 nike

我的所有对话框都显示在屏幕的左上角而不是中心。

让对话框自动正确放置的最佳方法是什么?

enter image description here

import QtQuick 2.7
import QtQuick.Controls 2.2

ApplicationWindow {
id: mainWindow

visible: true
width: 640
height: 480
title: qsTr("Hello World")

Component.onCompleted: {
showMessageBox('Hey this actually works!');
}

function showMessageBox(message) {
var component = Qt.createComponent("MessageDialog.qml")
if(component.status == Component.Ready) {
var dialog = component.createObject(mainWindow)

dialog.title = qsTr("Information")
dialog.text = message

dialog.open()
} else
console.error(component.errorString())
}
}

使用一个非常简单的MessageDialog.qml:

import QtQuick 2.7
import QtQuick.Controls 2.2

Dialog {
standardButtons: DialogButtonBox.Ok

property alias text : textContainer.text

Text {
id: textContainer

anchors.fill: parent

horizontalAlignment: Qt.AlignLeft
verticalAlignment: Qt.AlignTop
}
}

最佳答案

文档提示,DialogPopup 的后代其中有 x/y -坐标。

我认为这将是定位它的良好开端。

对您有用:

  • parent.width - 这应该是窗口的宽度
  • width - 这应该是您的Dialog的宽度
  • 父级高度
  • 高度

计算正确的位置,你应该没问题。

用这个你可以创建一个新的基类 CenteredDialog.qml

Dialog {
x: (parent.width - width) / 2
y: (parent.height - height) / 2
}

然后始终使用CenteredDialog而不是Dialog

此外,对于动态实例化,您可以在文件中声明Component,并且仅在实例化时使用component.createObject(parentObject, { property1Name : property1Value, property2Name : property2Value ... }) 语法。

关于qt - 如何在 QtQuick Controls 2 中将对话框置于屏幕中央?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45051411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com