【发布时间】:2012-05-28 01:32:59
【问题描述】:
我有一个 QMainWindows,它位于一个 QGraphicsView 内,它占据了所有客户区。在视图中,我渲染了一些 QGraphicsTextItem 项。只要我不调整主窗口的大小,一切正常。如果我这样做,这些项目将保持在原来的位置,并且不会移动到新的正确位置。基本上我会做的是在布局小部件中具有类似的行为,如果需要,它会扩展
更新 1
更新 2
更新 3
使用以下代码,按钮位于客户区的右侧。 944 是从 QGraphicsView 的 Qt Designer 定义的宽度。我对该区域左侧的小部件具有相同的代码,从 10 开始 xPos 并在每次添加新按钮时递增它。如果我调整窗口大小,左侧小部件总是移动到新位置,右侧没有相同的行为。为什么?
this->ui.setupUi(this);
qreal xPos = 944 - 10;
QGraphicsTextItem *myButton1 = new QGraphicsTextItem("my text");
myButton1 ->adjustSize();
myButton1 ->setPos(xPos - myButton1 ->textWidth(), 10);
xPos -= myButton1 ->textWidth();
this->m_graphicsScene->addItem(myButton1);
QGraphicsTextItem *myButton2 = new QGraphicsTextItem("my text 2");
myButton2 ->adjustSize();
myButton2 ->setPos(xPos - myButton2->textWidth(), 10);
xPos -= myButton2 ->textWidth();
this->m_graphicsScene->addItem(myButton2);
【问题讨论】:
-
目前还不清楚到底应该发生什么。是否应该缩放显示?是否应该发生一些神奇的“重新布局”,即居中的项目需要保持居中但保持其几何形状?
-
正如您在屏幕截图中看到的,客户区右侧有一些东西。如果我调整窗口大小,事情不会向右移动,而是保持在旧位置。
-
视图中的其他内容呢?我怀疑您不希望所有内容都移到视图的左侧。请更具描述性。
-
如果需要的话,我基本上会有一些可以拉伸的布局(比如 QGridLayout)。调整窗口大小时位于客户端左侧区域的东西会转到新位置,但我在右侧区域绘制的东西不会移动到新位置。
-
很抱歉,这没有任何意义。如果右侧绘制的内容没有移动,您将拥有屏幕截图中的内容(即留在中间)。你现在说的是调整大小?所以需要应用一些缩放?请对你想要发生的事情做一个真实的模型,并请展示你迄今为止为自己解决这个问题所做的尝试。
标签: qt4 qgraphicsview qgraphicsscene