私が持っているものは次のようなものです:
int main(int argc, char **argv) {
QApplication app(argc, argv);
MainWindow appWindow;
appWindow.show();
return app.exec();
}
class MainWindow : public QMainWindow {
...
private:
QGraphicsScene *mScene;
QGraphicsView *mView;
QGraphicsItem *mItem;
QPushButton *mButton1, *mButton2;
};
MainWindow::MainWindow(...) {
mScene = new QGraphicsScene(this);
mScene->setItemIndexMethod(QGraphicsScene::NoIndex);
mView = new QGraphicsView(mScene, this);
mView->setAlignment(Qt::AlignLeft | Qt::AlignTop);
mButton1 = new QPushButton("Create Item", this);
QObject::connect(mButton1, SIGNAL(clicked()), ...);
mButton2 = new QPushButton("Set Item Position");
QObject::connect(mButton2, SIGNAL(clicked()), ...);
}
void MainWindow::button1Clicked() {
mItem = new QGraphicsSimpleTextItem("Test Item");
mItem->setPos(mItem->pos() + QPointF(7.0f, 7.0f)); // doesn't work
mScene->addItem(mItem);
// even when I move the setPos() call after QGraphicsScene::addItem,
// the item still paints at the top-left corner (0.0f, 0.0f)
}
void MainWindow::button2Clicked() {
mItem->setPos(mItem->pos() + QPointF(7.0f, 7.0f)); // works perfect
}
私はQtに非常に慣れていないので、基本的な概念を誤解している可能性があります。誰かが私がここで間違っていることを見つけることができますか?