多级窗口可以通过动态组件进行实现,也可以通过loader加载。

然而,在此要注意窗口显示、隐藏的顺序;

1、当窗口层级为主窗口 - 子窗口A --- 子窗口B;

这种模式, A是B的父窗口,那么在进行显示时,必须先显示A,在显示B, 同时,在隐藏时,要先隐藏B,在隐藏A,如果先隐藏了A,再隐藏B,就会出现主窗口自动最小化到

状态栏的现象:

如果将主窗口传入A内,在动态创建B,同时指定B的父窗口为主窗口,那么在子窗口A关闭,而B隐藏的状态时,会出现B突然又显示出来了,而A正常关闭;

正确的做法是将A,B作为同级窗口,同时以主窗口作为父窗口,通过信号进行控制两个窗口的相关显示、隐藏关系;

main.qml

  1. import QtQuick 2.9
  2. import QtQuick.Window 2.2
  3. import QtQuick.Controls 1.3
  4. Window {
  5. id: windows;
  6. visible: true
  7. width: 640
  8. height: 480
  9. title: qsTr("Hello World")
  10. property var child;
  11.  
  12. Button{
  13. id: test;
  14. width: 70;
  15. height: 30;
  16. onClicked: test1.open();
  17. }
  18.  
  19. Test1{
  20. id: test1;
  21. visible: false;
  22. onShowTest:{
  23. child.open();
  24. this.close();
  25. }
  26. }
  27.  
  28. Connections{
  29. target: child;
  30. onGotoPre:{
  31. test1.open();
  32. child.close();
  33. }
  34. }
  35.  
  36. Component.onCompleted:{
  37. var comp = Qt.createComponent("qrc:/TestComp.qml");
  38. if( comp.status === Component.Ready)
  39. {
  40. child = comp.createObject(windows);
  41. }
  42. }
  43. }

Test1.qml

  1. import QtQuick 2.0
  2. import QtQuick.Window 2.2
  3. import QtQuick.Controls 1.3
  4. Window {
  5. id: test;
  6. width: 300;
  7. height: 200;
  8. visible:false;
  9. signal showTest();
  10. property var parentDlg;
  11.  
  12. Button{
  13. id: testButton;
  14. text:"click me";
  15. onClicked:{
  16. showTest();
  17. }
  18. }
  19.  
  20. function open()
  21. {
  22. test.visible = true;
  23. }
  24.  
  25. function close()
  26. {
  27. test.visible = false;
  28. }
  29.  
  30. }

TestComp.qml

  1. import QtQuick 2.0
  2. import QtQuick.Window 2.2
  3. import QtQuick.Controls 1.3
  4. Window {
  5. id: testcomp;
  6. width: 200;
  7. height: 200;
  8. signal gotoPre();
  9. Column{
  10. Rectangle{
  11.  
  12. width: 100;
  13. height: 100;
  14. color:"red";
  15. }
  16.  
  17. Button{
  18. width: 70;
  19. height: 30;
  20. text: "回到上一页"
  21. onClicked:{
  22. gotoPre();
  23. }
  24. }
  25.  
  26. }
  27.  
  28. function open()
  29. {
  30. testcomp.visible = true;
  31. }
  32.  
  33. function close()
  34. {
  35. testcomp.visible = false;
  36. }
  37. }

  

qml: 多级窗口visible现象;的更多相关文章

  1. delphi xe6 窗口 visible 不能隐藏 解决

    delphi xe6 窗口 visible 不能隐藏 解决 在工程代码里面加上 Application.ShowMainForm := false;

  2. qml实现窗口拖动

    在去掉窗口标题栏后窗口会失去鼠标拖动效果,所以需要自己添加拖动效果. 实现代码: ApplicationWindow {     id: mainWindow     visible: true    ...

  3. QML之窗口(无边框、透明及拖拽)

    1.无边框 Qt Quick 2.0 中 QQuickView代替了1.0中的QDeclarativeView. 无边框窗口代码如下: QQuickView viwer; //QQuickView继承 ...

  4. QML 从入门到放弃

    发现了一个问题: QQuickView only supports loading of root objects that derive from QQuickItem. If your examp ...

  5. [转载]震惊!QWidget竟然可以嵌入到QML中,QMl窗口句柄竟然是这样获取

      背景 记得在初学qml时,就被大佬告知Qml的实现有两种方式“view+item”和“engine+widow”,那么能不能将QWidget嵌入到QML中来呢,我收到的答案是不可以,原因是QML的 ...

  6. 【QML与C++混合编程】用QVariantList传递数组类型成员

    2017.5.8 更新:Record类要用指针,QObject 不能有拷贝函数. 我有一个C++中自定义的ReaderModel,继承自QAbstractListModel类,传递给了QML. 它的m ...

  7. 关于html页面布局

    之前做的一个网站,结果今天这几天测试发现在19寸屏幕和手机屏幕上页面布局全乱了,今天刚刚改好,发现还是自己经验不足,做个小总结. 一.div布局要固定宽高 当div不设计长宽高而是自动由内部控件”撑“ ...

  8. C#绘图双缓冲

    C#绘图双缓冲 C#双缓冲解释: 简单说就是当我们在进行画图操作时,系统并不是直接把内容呈现到屏幕上,而是先在内存中保存,然后一次性把结果输出来,如果没用双缓冲的话,你会发现在画图过程中屏幕会闪的很厉 ...

  9. C#-gdi绘图,双缓冲绘图,Paint事件的触发

    一. 画面闪烁问题与双缓冲技术 1.1 导致画面闪烁的关键原因分析: 1  绘制窗口由于大小位置状态改变进行重绘操作时 绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面 ...

随机推荐

  1. 【C/C++】递归算法

    所谓递归——函数的递归调用.c语言的这种特性给程序设计带来许多方便.尤其是接触数据结构时,会发现递归的出现频率非常之高,也行之有效~下面是笔者在接触递归这个东西时的一些个人总结和体会: 1.直接或间接 ...

  2. CF558E-A Simple Task-线段树+计数排序

    计数排序的原理,只要知道了有几个数比i小,就可以知道i的位置 这道题只有26个字母,搞26颗线段树,然后区间更新 #include <cstdio> #include <cstrin ...

  3. Docker基本使用(二)

    Docker 客户端 我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项. 可以通过命令 docker command --help 更深入的了解指定的 Docker 命 ...

  4. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

  5. 使用kubeadm安装Kubernetes

    Docker安装 yum install -y yum-utils yum-config-manager --add-repo https://docs.docker.com/v1.13/engine ...

  6. 搜索引擎(Elasticsearch搜索详解)

    学完本课题,你应达成如下目标: 掌握ES搜索API的规则.用法. 掌握各种查询用法 搜索API 搜索API 端点地址 GET /twitter/_search?q=user:kimchy GET /t ...

  7. 线段树 by yyb

    线段树 by yyb Type1 维护特殊信息 1.[洛谷1438]无聊的数列 维护一个数列,两种操作 1.给一段区间加上一个等差数列 2.单点询问值 维护等差数列 不难发现,等差数列可以写成\(ad ...

  8. [APIO2013]机器人(斯坦纳树)

    题目描述 VRI(Voltron 机器人学会)的工程师建造了 n 个机器人.任意两个兼容的机 器人站在同一个格子时可以合并为一个复合机器人. 我们把机器人用 1 至 n 编号(n ≤ 9).如果两个机 ...

  9. poj 1611 The Suspects(并查集输出集合个数)

    Description Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, wa ...

  10. CodeForces - 589B(暴力)

    题目链接:http://codeforces.com/problemset/problem/589/B 题目大意:告诉你n 个矩形,知道矩形的长度和宽度(长和宽可以互换),每个矩形的长度可以剪掉一部分 ...