Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 23.09.2014
Сообщений: 52

Как перерисовать экран после события QMouseEvent?

08.10.2014, 14:56. Показов 2862. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Все началось отсюда
Как сделать привязку двух объектов?

Есть две линии QGraphicsLineItem

Задача - при движении линии №1(нач.коорд1, конечн.коорд1) двигать линию №2 (нач.коорд2,конечн.коорд2) таким образом: нач.коорд2=нач.коорд1

вот код класса, он в myview.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class MyView : public QGraphicsView
{
    Q_OBJECT
public:
 
    qreal pp1y=60;
    qreal pp1x=60;
    qreal pp2y=60;
    qreal pp2x=200;
    qreal pp3y=80;
    qreal pp3x=80;
    qreal pp4y=150;
    qreal pp4x=150;
    QGraphicsLineItem *line2;
    QGraphicsLineItem *line1;
    MyView(QGraphicsScene *pScene,QWidget *pwgt = 0):QGraphicsView(pScene,pwgt)
    {
        line1=pScene->addLine(QLineF(pp1x,pp1y,pp2x,pp2y));
        line1->setFlags(QGraphicsItem::ItemIsMovable);
        line2=pScene->addLine(QLineF(pp3x,pp3y,pp4x,pp4y));
        line2->setFlags(QGraphicsItem::ItemIsMovable);
    }
 
    QMessageBox msgBox;
 
 
    void mouseReleaseEvent ( QMouseEvent * event)
    {
        QMessageBox *msgBox = new QMessageBox();
 
        QPointF np1x=line1->line().p1();
        QPointF np3x=line2->line().p1();
        QString str;
        str.append(QString::number(np1x.x()));
        str.append(" ");
        str.append(QString::number(np1x.y()));
        str.append(" ");
        str.append(QString::number(np3x.x()));
        str.append(" ");
        str.append(QString::number(np3x.y()));
        msgBox->setText(str);
        msgBox->show();
 
        line2->setPos(np1x-np3x);
    }
//дальше идет другая часть кода, не связанная с этой задачей
вот код срр

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    QRect rect(0,0,1100,1600);
    QGraphicsScene scene(rect);
    MyView *view=new MyView(&scene);
//другая часть
    box->addWidget(view);
    w.setLayout(box);
    w.resize(1200,500);
    w.show();
    return a.exec();
}
Сейчас линию можно перенести всего 1 раз, новые координаты не вычисляются, хотя линия перемещается по сцене.
как сделать, чтобы после каждого переноса пересчитывались координаты линий 1 и 2?

за код тоже можно меня поругать(а лучше конструктивная критика), вижу, что он корявый, но пока ничего не могу с собой поделать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.10.2014, 14:56
Ответы с готовыми решениями:

Системный трей! и события Мыши. <QMouseEvent>
Всем привет! Помогите разобраться! Создаю класс, унаследованный от &lt;QSystemTrayIcon&gt; и никак не могу подключить события Мыши. ...

QMouseEvent, Как реализовать несколько кликов подряд?
Есть функция void Previewer::virtualClick(int x, int y) { QMouseEvent pressEvent(QEvent::MouseButtonPress, QPoint(x,y),...

Как перерисовать PictureBox (или форму) после уменьшения/увеличения размеров
Здравствуйте. Помогите, пожалуйста. Я изучаю простые графические операции: помещаю картинку из файла, рисую эллипс, пишу текст - в окне...

20
0 / 0 / 0
Регистрация: 23.09.2014
Сообщений: 52
12.10.2014, 21:47  [ТС]
Студворк — интернет-сервис помощи студентам
Вообще круто
в Press пришлось вставить метод, потому что не работало как надо, так что это от безысходности, но с элементами культа Карго
Спасибо!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2014, 21:47

Как сделать вывод сообщения на экран при совпадение кода события.
------------------------------------------------------------------------------ Перечисление событий в журнале 'system' для узла '*'...

Как вернуться в тело основной программы после обработки события формы?
Основная программа доходит до оператора показа формы. Пусть он называется ОПЕРАТОР-1. За ним следуют ОПЕРАТОР-2 и так далее.Надо чтобы...

Как запомнить номера просмотренных строк и после наступления события их обработать?
Добрый вечер! :) Уважаемые форумчане, Есть задача: Просматриваю строки, например 2, 3, 6, 8, 10 и сразу, к примеру в пятой ячейке строки...

Как создать обработчик события при нажатии на кнопки Развернуть во весь экран - Восстановить?
Народ, Хелп! Как написать или создать в Delphi событие при нажатии на эту пару кнопок? Везде юзал, ничего не нашел. Есть для...

После запуска черный экран после того как я разобрал и почистил видеокарту от пыли и заменил термопасту
Добрый вечер. После того как я разобрал и почистил видеокарту от пыли и заменил термопасту начались проблемы с запуском Winows. А именно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru