Qt Quick 5.2 开发笔记4-------窗口

窗口这玩意儿,现在还是有些说不太清楚。
首先我们按Qt Creator的向导来,我这一系列东西开头是Qt Quick,
所以新建项目、应用程序,Qt Quick Application。
Qt Quick Component Set选择 Qt Quick 2.0
一步一步next之后,我们看到了 hello world
这样就产生了好几个问题。
问题1:main.cpp
 
  
#include 
#include "qtquick2applicationviewer.h"
 
int main(int argc,char *argv[])
{
    QGuiApplication app(argc,argv);
 
    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/qx/main.qml"));
    viewer.showExpanded();
 
    return app.exec();
}


这个怎么和我们在Qt例子(examples\quick下面的)中写的不一样?
 
问题2:这个只是一个简单qml窗口,能否自定义一个窗口?
比如需求不需要有边框,需要有系统默认的标题栏Titlebar。
比如就算要默认的标题栏,我也要去掉最大化。
 
问题3:我希望隐藏掉我的qml文件,我希望把它们整体打包到exe中。
 
这3个问题都是让Qt Quick做的玩具程序真正成为一个软件产品的关键点,当然是对我来说。
 
从需求出发,我需要一个主窗口,可以自定义标题栏。我需要把qml打包到exe,参考范例之后,找到了解决方案。打包到exe,其实非常简单,在工程中新建一个qrc,把qml加入即可。但是,在调试过程中,建立qrc,然后修改qml,一个个去查找相当麻烦,还是先不用qrc,来的方便。
 
窗口问题,例子是examples\quick\window,基本已经实现了窗口定义,弹出式窗口的功能,main.cpp也异常简洁,不像我们从向导出发,会多一个qtwuick2applicationviewer的类。反正模仿这个范例,会发现主qml的root不再Item,而是Window,另外多了一个引入importQtQuick.Window2.1
注意这种方式的最终发布文件,需要把Qt5Widgets.dll也带着发布出去。很不幸,最终发布文件又多了4M。
 
回头再说说Window,这时候可以去帮助里面仔细观看Window的属性和方法。
比如去掉标题栏。或者只去掉最大化。这些都是易如反掌的事情。
 
当然除了例子中以Window作为root的方式之外,还有以QtObject作为root,把自定义的窗口作为property的方式,然后在Component.onCompleted信号后再显示对应窗口。
 
这个实在有些让人觉得搞笑。好的东西初期一般都是一个问题只能用一种方式解决,但发展到一定阶段总是这样变的让人迷糊,对应一个问题,出来n种解决方法,让用户觉得@#$%。。。所以我只能说“现在还是有些说不太清楚”    指不定还有另外的标准方法。
 
讲了一大堆方法问题,细节一点没提到。你一定很失望吧?

你可能感兴趣的:(Qt)