QT QML初体验随笔之QQuickView(1)

1.学习QML理由


由于MFC编写出来的界面局限性,但又不愿意学习C#的WPF,QML就是我编写界面的下一个选择。

2.使用的Qt版本


qt-opensource-windows-x86-msvc2010_opengl-5.4.1.exe

3.使用环境


x64 Windows 10 家庭中文版

4.Qt Quick App 启动模式


根据《Qt Quick核心编程》了解到有两种启动Qt Quick App模式:
  • QQmlApplicationEngine 搭配 Window
  • QQuickView 搭配 Item
两者不同之处在于:使用QQuickView显示QML文档,对窗口的控制权在C++代码;而是用QQmlApplicationEngine加载以Window为跟对象的QML文档,则具有窗口的完整控制权。
由于Qt程序构建默认使用第一种,没有挑战性,所用我选择了第二种创建方式。

5.简单的项目目录

QT QML初体验随笔之QQuickView(1)

6.简单的项目构建



QT QML初体验随笔之QQuickView(1)


使用了Shadow


7. main.qml简单代码



importQtQuick2.4

importQtQuick.Controls1.3

 

Rectangle

{

   height:480;

   width:960;

   color:"green";

 

   border.width:4;

   border.color:"#008080";

//   radius:10;

   opacity:1;       //区分颜色透明度和窗口透明度

}



8. main.cpp简单代码



#include<QApplication>

#include<QQmlContext>

#include<QQuickView>

 

intmain(intargc,char*argv[])

{

   QApplicationapp(argc,argv);

   QQuickViewviewer;

//    与QQmlApplicationEngine不同之处:

//   viewer.setResizeMode(QQuickView::SizeRootObjectToView);  // 跟对象跟随View缩放

//   viewer.setFlags(Qt::Window|Qt::FramelessWindowHint);    // 去掉标题栏

   viewer.setSource(QUrl("../TcpTestV/main.qml"));            // 是以Shadow的第一层目录为基点

viewer.show();

 

   returnapp.exec();

}


9.总结


不同之处:

QQuickView: 部分设置在代码中,如:上述Rectangle矩形随View窗口缩放,去掉标题栏

QQmlApplicationEngine:在QML文件中,Rectangle自动随窗口缩放,去掉标题栏在QML文件flag属性中设置