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

2024-04-02

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

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

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())
    }
}

用一个非常简单的消息对话框.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
    }
}

文档提示,Dialog https://doc.qt.io/qt-5/qml-qtquick-controls2-dialog.html是的后代Popup https://doc.qt.io/qt-5/qml-qtquick-controls2-popup.html其中有x/y https://doc.qt.io/qt-5/qml-qtquick-controls2-popup.html#x-prop- 坐标。

我认为这将是定位它的一个良好的开始。

对您有利:

  • parent.width- 这应该是你的窗户的宽度
  • width- 这应该是你的Dialogs width
  • parent.height
  • height

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

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

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

然后使用CenteredDialog代替Dialog每时每刻。

进一步地,对于动态实例化你可以声明Component在文件中,并且仅在实例化时使用component.createObject(parentObject, { property1Name : property1Value, property2Name : property2Value ... }) syntax.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 QtQuick Controls 2 中将对话框置于屏幕中央? 的相关文章

  • 使用 CMake 编译时更改头文件位置会导致缺少 vtable 错误

    对于一个大型 C 项目 我需要从 qmake 过渡到 CMake 但是在处理一个玩具示例时 我遇到了一些我不理解的行为 示例代码具有单个头文件 当该头文件移动到子目录中时 我收到 MainWindow 类缺少 vtable 的错误 CMak
  • 完全彻底卸载QT Creator

    问题 如何从 Linux 机器上卸载 QT Creator 我的 Debian Jessie 机器上的安装已损坏 我尝试过重新安装 修复等 但没有成功 建议我完全卸载 获取最新版本并重新安装 问题是我不确定如何执行此操作 每次我尝试时 QT
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • C++ SQL 查询构建库

    我正在寻找一个提供与 c SelectQueryBuilder 库类似功能的 c 库 http www codeproject com Articles 13419 SelectQueryBuilder Building complex a
  • 如何声明一个带有成员函数指针的函数

    我有一个类 其中的成员变量指向库对象 class myClassA private libraryClass libraryObject 该库类发出事件 以字符串为特征 并提供一种机制 允许客户端类指定在发出事件时应调用的成员函数 因此在m
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • Qt 5.0中添加QFtp

    我需要在我的项目中使用 QFtp 类 当我使用 Qt 5 0 进行开发时 我需要从 gitorious 存储库下载该类 https qt gitorious org qt qtftp https qt gitorious org qt qt
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • Qt中Q_PROPERTY的意义是什么?

    我无法理解 Q PROPERTY 的用法 Q PROPERTY 如何帮助程序具有防御性 它是干什么用的 我看过这个论坛 但确实无法应用 我已经理解了这个例子 但不明白它的用法 这是一个例子 我能从中得到什么 我知道阅读将赋予只读特权 wri
  • 针对初学者的 QT 商业许可证与非商业许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 QT 许可似乎非常反学习 因为据我所知 用它开发的任何东西都只能是商业的当且仅当 its entire开发是在使用商业许可证的情况下完成的
  • 如何将自定义 Qt 类型与 QML 信号一起使用?

    我在 Qt 5 2 qml 应用程序中创建了一个自定义类型 class Setting public QObject Q OBJECT Q PROPERTY QString key READ key WRITE setKey Q PROPE
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方
  • QTabWidget 选项卡在垂直方向,但文本在水平方向

    我正在尝试用 C Qt 制作一个带有这样的侧边栏的应用程序 但是当将 QTabWidget 方向设置为西时 它会使文本垂直 如何让文本位于左侧 但水平对齐 PS 我不需要图标 提前致谢 您可以使用QListWidget http doc q
  • 为什么 QT 设计器重新调整大小或不允许我缩小或展开小部件或按钮?

    很多时候 在使用 QT 设计器时 我发现自己需要通过缩小或扩展来调整事物的大小 每当我尝试这样做时 程序都不允许我这样做 而只是恢复到将对象放置在窗口中时给我的原始默认大小 无论我的布局如何 为什么要这样做 是否有可能改变这一点 以便我可以
  • 在 Qt 中,许多插槽连接到同一信号,它们在发出信号时是否按顺序调用?

    In the Qt文件说 如果多个插槽连接到一个信号 则这些插槽将 按照它们连接的顺序一个接一个地执行 当信号发出时 但在connect 功能 设置Qt ConnectionType输入为Qt QueuedConnection意思是 当控制
  • 是否可以根据 QSlider 的位置来改变其手柄的颜色?

    我非常清楚如何通过样式表自定义 QSlider 但我想知道是否可以执行以下操作 我希望滑块的手柄从蓝色变为黄色 当设置在左侧时 它是蓝色的 设置在左侧时 它是蓝色的 当你将它向右移动时 它会出现从蓝色到黄色的渐变 如果可以通过样式表 如何实
  • CMake AUTOMOC,文件位于不同文件夹中

    我有一个简单的 CMake 项目 proj project folder a h a cpp CMakeLists txt CMakeLists txt cmake minimum required VERSION 3 2 set CMAK
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • 如何在不声明 32 个插槽的情况下将 32 个按钮的 pressed() 信号连接到单个函数?

    我有一个小部件 里面有 32 个按钮 我需要将每个按钮的 Pressed 信号连接到一个插槽 以便调用一个函数 该函数的参数取决于我按下的按钮 现在我通过以 on QPushButtonName pressed 的形式添加 32 个插槽来做

随机推荐

  • 如何计算圆上两点之间的弧角?

    给定一个已知圆心和圆上两点 即已知半径 的圆 如何确定圆上两点之间的最小圆弧角度 将中心到两点变成一对向量 然后推过去this http en wikipedia org wiki Vector 28geometry 29 Dot prod
  • 为什么Android Studio 1.0 rc会开始下载Android SDK而不检测是否存在?

    我已经在我的 Archlinux 盒子里安装了 Android Studio 1 0 rc 和 Android SDK 但是当我尝试创建一个新的Android应用程序时 AS会尝试直接从dl ssl google com下载另一组SDK 我
  • 什么情况下不会调用 C++ 析构函数?

    我知道我的析构函数是在堆栈的正常展开和抛出异常时调用的 但不是在调用 exit 时调用 还有其他情况我的析构函数不会被调用吗 SIGINT 或 SIGSEGV 等信号怎么样 我认为对于 SIGSEGV 它们不会被调用 但对于 SIGNINT
  • ld: -bundle 和 -bitcode_bundle 不能一起使用

    我正在建造llvm clang 3 7具有位码支持 fembed bitcode 由于错误 某些模块无法链接 ld bundle 和 bitcode bundle Xcode 设置 ENABLE BITCODE YES 不能一起使用 cla
  • 实际上使用 UIDatePickerModeCountDownTimer 作为计时器

    我只是想制作一个计时器 我想用UIDatePickerModeCountDownTimer的模式UIDatePicker 这样当用户只需在选择器中选择 15 分钟时 他们就会返回到一个屏幕 该屏幕在标签中显示 15 分钟的值 然后他们可以从
  • 具有多表继承的父类上的 Django post_save 信号

    在 Django 中 如果您有使用多表继承的模型 并且您在父类上为 post save 信号定义了一个接收器 那么当保存子类的实例时 是否会调用该接收器函数 借个例子来自另一个问题 https stackoverflow com quest
  • 在 R 中将完整年龄从字符转换为数字

    我有一个数据集 其中人们的完整年龄为 R 中的字符串 例如 10 年 8 个月 23 天 我需要将其转换为有意义的数字变量 我正在考虑将其转换为有多少天人的年龄 这很困难 因为月份有不同的天数 因此 最好的解决方案可能是创建一个双变量 将年
  • 如何检测android中的屏幕覆盖?

    在某些设备中 当屏幕覆盖应用程序正在运行时 单击 VPN 权限确定按钮时不会执行任何操作 所以我想检查屏幕覆盖应用程序是否正在运行 并创建 检测到屏幕覆盖 对话框 有没有办法在android中以编程方式检测屏幕覆盖 示例代码 public
  • CATALINA_OPTS 与 JAVA_OPTS - 有什么区别?

    我试图找出 Apache Tomcat 变量之间的区别 CATALINA OPTS and JAVA OPTS in SO http stackoverflow com并惊讶地发现这里还没有发布问题 答案 所以我想在发现差异后在这里分享 带
  • 在 Haskell 中实现记忆功能

    我对 Haskell 相当陌生 我正在尝试实现一个基本的记忆功能 它使用Data Map存储计算值 我的示例是欧拉项目问题 15 其中涉及计算 20x20 网格中从一个角到另一个角的可能路径数 这是我到目前为止所拥有的 我还没有尝试编译 因
  • 如果未显式提交或回滚,则自动提交事务

    我们使用 Weblogic 服务器 并在连接到 Oracle 10g 时始终将 autoCommit 设置为 false 我想知道 Weblogic 中是否有一个设置 如果未从应用程序代码中显式调用提交或回滚 它将自动提交事务 我听说 We
  • VS2013 Intellisense 不理解 decltype

    是否有补丁 官方或非官方 可以让 IntelliSense 停止报告每次使用decltype作为语法错误 它编译得很好 所以我知道decltype是支持的 但是到处都是红色波浪线会让人分心 而且很难找到actual代码中的错误 每次编译都会
  • 重新排序表列?

    有谁知道使用 jQuery 对表列重新排序的方法吗 我的意思不是排序 我的意思是在表中向左或向右动态移动整个列 我知道优秀的可拖动插件 http www danvk org wp dragtable 但我不需要允许用户移动列的东西 我需要一
  • 网络音频 API 故障/失真问题

    我是网络音频 API 的新手 并制作了一个简单的合成器来了解细节 问题是 在大量声音输入后 我的音频会失真很多 因此 如果我施加大量频率 它就会失真 任何了解 API 的人都可以快速浏览一下我的代码 看看是否存在任何重大错误 遗漏 可以在
  • 将升压套接字存储在向量中[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 这是代码 我收到以下错误 In member function void socks4Server listener i
  • 在iOS中,如何根据环境(dev、hom、prod)更改启动屏幕图像?

    我有一个带有图像的启动屏幕 到目前为止运行良好 但现在我有 3 个模式 dev hom 和 prod 我想知道如何根据构建时选择的模式更改启动屏幕图像 EDIT 我想到了两种选择 但我不知道哪一种最好 选项 1 创建两个 Storyboar
  • 在 iOS 中将应用程序中的 cookie 设置为 Safari

    在我的应用程序中 我需要实现下一个功能 当用户登录应用程序时 它 应用程序 需要将某些网站的 cookie 或任何其他数据 保存到移动 Safari 目标是当用户下次在 Safari 中打开该网站时不再登录 文档 https develop
  • 如何使用 matplotlib/python 绘制地理数据

    我正在尝试使用不同的库在 python 上绘制多边形 但这些库都不适合我 我试过vincent https github com wrobstory vincent Shapely https pypi python org pypi Sh
  • Python pip:ImportError 无法从“six”导入名称“ensure_str”。在多个 pip 命令上

    当我第一次想安装 python3 的 tqdm 包时 我注意到出了问题 跑步pip install tqdm我收到了 ImportError cannot import name ensure str from six home carl
  • 如何在 QtQuick Controls 2 中将对话框置于屏幕中央?

    我的所有对话框都出现在屏幕的左上角而不是中心 让对话框自动正确放置的最佳方法是什么 import QtQuick 2 7 import QtQuick Controls 2 2 ApplicationWindow id mainWindow