QT: взаимодействие с пользовательским вводом внутри GUI Action

В моем приложении есть QAction, скажем, его зовут GuiWorkerAction, когда он запускается, он рисует некоторые графики в QGraphicsView. В какой-то момент для продолжения действия требуется регион, скажем, имя региона — inputROI, получаемый с помощью мыши для рисования в графическом представлении.

Если действие GuiWorkerAction не выполняет работу с графическим интерфейсом, я могу запустить это действие в другом потоке и дождаться его завершения. Но когда он отображает элементы GUI, идея нового потока просто содержит основной поток GUI для отображения чего-либо.

Слот для GuiWorkerAction похож на:

    QGraphicsRectItem *rect = new
QGraphicsRectItem(QRectF(QPointF(x,0),QPointF(x+100,100)));
rect->setPen(QPen(Qt::red));
rect->setBrush(QBrush(Qt::gray,Qt::SolidPattern));
scene->addItem(rect);

//###### here wait for user interaction ######//
//say we need a circle from user drawing
Circle* circle = wait_for_circle_from_user_drawing();

//continue to draw other items for GuiWorkerAction
QGraphicsTextItem* text = scene->addText("bogotobogo.com",
QFont("Arial", 20) );
text->setFlag(QGraphicsItem::ItemIsMovable);
scene->addItem(rect);}

Сложность состоит в том, что действие GuiWorkerAction должно ожидать ввода пользователя, но, поскольку оно находится в основном потоке графического интерфейса, если оно ожидает, то его пользователь не может ничего рисовать в представлении с помощью мыши.

Итак, как я могу решить эту проблему?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …