我有以下*.pro文件:
领导解决方案的人
# head - pro file :
TEMPLATE = subdirs
CONFIG = qt thread ordered
# save root directory
PROJECT_ROOT_DIRECTORY = $$_PRO_FILE_PWD_
message("Master pro file path : ["$${PROJECT_ROOT_DIRECTORY}"]") // output : "Master pro file path : [/Path/To/Directory]"
# project subdirs
SUBDIRS += PROJECT1
Run Code Online (Sandbox Code Playgroud)
和
# PROJECT1 - pro file :
TEMPLATE = app
# etc.
# output 'PROJECT_ROOT_DIRECTORY ' contents
message("Master pro file path : "$${PROJECT_ROOT_DIRECTORY}) // output : "Master pro file path : []"
Run Code Online (Sandbox Code Playgroud)
如何在2个pro文件之间传递变量(这里是变量PROJECT_ROOT_DIRECTORY
)?
编辑: …
我有一个应用程序,您可以在其中观看给定 2D 游戏的回放:
基本上,车辆在地图上移动。视图以车辆为中心,因此地图在回放时滚动,类似于微型机器(这只是提供一个想法,实际游戏不是微型机器)。
(来源:randomracket.com)
在我的场景中,当车辆四处移动时,地图是静态的。视图为重播的每一帧滚动,以便车辆居中。出于性能原因,地图在几秒内平铺QGraphicsPixmapItem
。
视口更新模式设置为QGraphicsView::BoundingRectViewportUpdate
。项目索引方法设置为QGraphicsScene::NoIndex
.
在大多数情况下,一切正常。但是当地图比平时大时,车辆不会更新。视图正在滚动,图块更新良好;但不是车辆,除非我通过放大/缩小触发完整的视口更新(因此我知道该项目已定位良好)。
车辆的 boundingRect 永远设置一次,并且是有效的(见下文,以逻辑坐标给出)。我不会在项目的边界矩形之外绘制。
调试输出的一些示例(只有第三个配置不起作用):
ok :
vehicle->boundingRect() : QRectF(-1.9391,-1.9391 3.8782x3.8782)
scene->sceneRect() : QRectF(-117.543,-38.3826 138.834x40.3217)
SCENE_CACHING : 85 tiles
ok :
vehicle->boundingRect() : QRectF(-2.88489,-2.88489 5.76979x5.76979)
scene->sceneRect() : QRectF(-68.8843,-18.2202 187.989x119.277)
SCENE_CACHING : 308 tiles
nok : vehicle won't update
vehicle->boundingRect() : QRectF(-3.45546,-3.45546 6.91092x6.91092)
scene->sceneRect() : QRectF(-64.2988,-107.802 188.927x187.445)
SCENE_CACHING : 506 tiles
Run Code Online (Sandbox Code Playgroud)
我试图调试更新通道,而油漆事件确实排除了车辆所在的区域...
任何人都知道为什么更新可能会错过特定项目?
编辑 :
Qt:4.8.1,我也看到了以前版本的问题
操作系统:Windows XP SP3,尚未在其他操作系统上测试
我没有用一个最小的例子成功地重现这个问题。最小的例子就像预期的那样工作。在现实生活中,这是所做的:
地图是从文件中读取的。它由多达数百个界定地面/天空的多边形组成(每个多边形都由多边形、边和顶点层组成)、数千张图片和纹理,然后剪裁到地面或天空,以及一些其他项目。
我计算所有剪报,然后在 …