У меня есть около 150 QGraphicsLineItems в QGraphicsScene, и я хочу их «вращать», но поворот не влияет на их координату X.Другими словами, они будут двигаться вертикально в соответствии с заданным углом поворота, но на самом деле они не будут вращаться или двигаться горизонтально.
Причина, по которой я хотел бы сделать это, состоит в том, что всмежный QGraphicsScene / View, который вращается нормально, и я хочу, чтобы элементы в этой новой сцене / представлении соответствовали отображаемой высоте нормально вращающихся элементов.
Буду признателен за некоторые предложения или отзывы.Спасибо!
РЕДАКТИРОВАТЬ: Здесь у меня есть диалог, в котором я рисую два квадрата на scene1 и две линии на scene2.Когда я перетаскиваю ползунок, я надеюсь получить указанное выше поведение, но все, что происходит, это то, что квадраты вращаются (как они должны), в то время как линии ничего не делают (они должны двигаться вверх и вниз с квадратами).Обратите внимание, что ошибок компиляции нет.
Вот конструктор диалога:
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
// These points will initially translate the squares and respective lines.
QPointF p1(-20,-5);
QPointF p2(30,30);
QGraphicsScene *scene1 = new QGraphicsScene;
QGraphicsRectItem *square1 = new QGraphicsRectItem(-10,-10,20,20);
QGraphicsRectItem *square2 = new QGraphicsRectItem(-10,-10,20,20);
square1->translate(p1.x(),p1.y());
square2->translate(p2.x(),p2.y());
scene1->addItem(square1);
scene1->addItem(square2);
QGraphicsScene *scene2 = new QGraphicsScene;
line1 = new QGraphicsLineItem(0,0,20,0);
line2 = new QGraphicsLineItem(0,0,20,0);
line1->translate(0,p1.y());
line2->translate(0,p2.y());
scene2->addItem(line1);
scene2->addItem(line2);
ui->graphicsView->setScene(scene1);
ui->graphicsView2->setScene(scene2);
}
И слот ползунка вращения:
void Dialog::on_verticalSlider_valueChanged(int value)
{
ui->graphicsView->resetTransform();
ui->graphicsView->rotate(value);
p1 = ui->graphicsView->transform().map(p1);
p2 = ui->graphicsView->transform().map(p2);
line1->translate(0,p1.y());
line2->translate(0,p2.y());
}