c
cordsacҚар. 28, 2017, 1:23 Т.Қ.

How can I resize QgraphicItem using mouse

qt, QGraphicItem, resize, Rectangle, c++

I asked question under this topic previously too,But this is slightly difference. I 'm following this tutorial these days,In that tutorial you drawn rectangle using mouse.So I tried to draw a rectangle when a button click.here is my sample code.


mainwindow.h

 private:
 QGraphicsRectItem *rect;

mainwindow.cpp

void MainWindow::on_btnCreate_clicked()
{
    //VERectangle *rectA = new VERectangle();
   // rect->setRect(20,20,100,100);*/
    rect = workplaceScene->addRect(20,20,100,100);
}

when I click the button, rectangle is generating properly,But it cannot resize. Sir,could you please explain me,how can I enable resize functionality to this rectangle too? and when I select this rectangle rectangleSetting.Ui isn't enable too.How can I solve this problems.

Thank you!!!
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

5
Evgenii Legotckoi
  • Қар. 29, 2017, 4:46 Т.Қ.

Hello...

You just added common Rectangle (QGraphicsRectItem) via addRect method. You need add Custom Rectangle via addItem method.
Because in common way rectangle hasn`t methods for resizing.
    c
    • Қар. 30, 2017, 2:56 Т.Қ.

    Thank you very much sir,I did so and rectangle is crated and which can now able to resize.


    void Widget::on_btnAdd_clicked()
    {
        VERectangle *io = new VERectangle();
        io->setRect(10,10,100,200);
        workplaceScene->addItem(io);
    }
    But when I click the rectangle rectangleSettings is not visible.

    void MainWindow::selectNewItem(QGraphicsItem *item)
    {
        switch (item->type()) {
        case QGraphicsRectItem::Type: {
            VERectangle *rect = qgraphicsitem_cast<VERectangle *>(item);
            ui->rectangleSettings->newRectangle(rect);
            break;
        }
        default:
            break;
        }
    }
    
    why it happening so and,how can I solve this...
      Evgenii Legotckoi
      • Жел. 3, 2017, 4:22 Т.Қ.

      In my example (Vector Editor) I used special method, which changes Configuration Widgets for Items on the Graphics Scene. When You select some items, you should invoke signal, by this signal you need to evaluate method for changing Configuration widget.


      Please see this method in my example.
      void MainWindow::checkSelection()
      {
          checkActionStates();
          switch (workplaceScene->selectedItems().length()) {
          case 0:
              ui->rectangleSettings->deselect();
              ui->polylineSettings->deselect();
              checkActionStates();
              ui->toolsWidget->setEnabled(true);
              break;
          case 1:
              switch (workplaceScene->selectedItems().at(0)->type()) {
              case QGraphicsRectItem::Type:{
                  ui->rectangleSettings->setVisible(true);
                  ui->polylineSettings->deselect();
                  ui->polylineSettings->setVisible(false);
                  break;
              }
              default: {
                  ui->rectangleSettings->deselect();
                  ui->rectangleSettings->setVisible(false);
                  ui->polylineSettings->setVisible(true);
                  break;
              }
              }
              checkActionStates();
              ui->toolsWidget->setEnabled(true);
              break;
          default:
              ui->rectangleSettings->deselect();
              ui->polylineSettings->deselect();
              ui->toolsWidget->setEnabled(false);
              break;
          }
      }
        c
        • Жел. 4, 2017, 11:14 Т.Ж.
        rectangleSettings .UI not visible only when the rectangles create this way.But rectangleSettings .ui visible for way of your reactangle creation.In my project I did both ways to create rectangles.But rectangleSettings .ui not visible when I create rectangles like this way..

        void Widget::on_btnAdd_clicked()
        {
            VERectangle *io = new VERectangle();
            io->setRect(10,10,100,200);
            workplaceScene->addItem(io);
        }


          Evgenii Legotckoi
          • Жел. 4, 2017, 4:06 Т.Қ.

          I forgot about another method.

          void MainWindow::checkActionStates()
          {
              ui->workplaceView->setDragMode(QGraphicsView::NoDrag);
              ui->rectangleSettings->setVisible(false);
              ui->polylineSettings->setVisible(false);
              switch (workplaceScene->currentAction()){
              case VEWorkplace::LineType:
                  ui->polylineSettings->setVisible(true);
                  break;
              case VEWorkplace::RectangleType:
                  ui->rectangleSettings->setVisible(true);
                  break;
              case VEWorkplace::SelectionType:
                  break;
              default:
                  ui->workplaceView->setDragMode(QGraphicsView::ScrollHandDrag);
                  break;
              }
          }
          I call this method, when I change state of graphics scene (in this case scene will be current action, create new item, or make selection). This method also changes visibility of settings widgets.

            Пікірлер

            Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
            Кіріңіз немесе Тіркеліңіз
            Г

            C++ - Тест 001. Первая программа и типы данных

            • Нәтиже:66ұпай,
            • Бағалау ұпайлары-1
            t

            C++ - Тест 001. Первая программа и типы данных

            • Нәтиже:33ұпай,
            • Бағалау ұпайлары-10
            t

            Qt - Тест 001. Сигналы и слоты

            • Нәтиже:52ұпай,
            • Бағалау ұпайлары-4
            Соңғы пікірлер
            G
            GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
            Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
            d
            dblas5Шілде 5, 2024, 11:02 Т.Ж.
            QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
            k
            kmssrАқп. 8, 2024, 6:43 Т.Қ.
            Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
            АК
            Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
            Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
            Енді форумда талқылаңыз
            Evgenii Legotckoi
            Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
            добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
            F
            FynjyШілде 22, 2024, 4:15 Т.Ж.
            при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
            BlinCT
            BlinCTМаусым 25, 2024, 1 Т.Ж.
            Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
            BlinCT
            BlinCTМамыр 5, 2024, 5:46 Т.Ж.
            Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
            Evgenii Legotckoi
            Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
            Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

            Бізді әлеуметтік желілерде бақылаңыз