Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 3
1

Изменения в qt? Не работает старая программа

20.05.2016, 23:11. Показов 570. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! У меня не работает часть написанной полгода назад программы, а именно не выводятся объекты QGraphicsItem на QGraphicsScene. Произошли какие - либо изменения? Как это можно исправить? Прилагаю код.
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
circle.h
 
#ifndef CircleGraphicsItem_H
#define CircleGraphicsItem_H
 
#include <QGraphicsItem>
#include <QSizeF>
#include <QColor>
 
 
class CircleGraphicsItem : public QGraphicsItem
{
public:
 
 
    CircleGraphicsItem(QGraphicsItem *parent = nullptr);
    CircleGraphicsItem(const QSizeF &size, const QColor &dataColor, const QColor &borderColor, QGraphicsItem *parent = nullptr);
 
    QSizeF size() const;
    void resize(const QSize &size);
 
    QColor borderColor() const;
    void setBorderColor(const QColor &borderColor);
 
    QString data() const;
    void setData(const QString &data);
    void setCoordinate(int a, int b);
 
    QRectF boundingRect() const;
    void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget);
 
 
private:
 
    QSizeF m_size;
    QColor m_borderColor;
    QColor m_dataColor;
 
    QString m_data;
    int x;
    int y;
 
    void paintText(QPainter *painter, const QString &text);
};
#endif // CircleGraphicsItem_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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
circle.cpp
#include "circle.h"
 
#include <QPainter>
#include <QGraphicsScene>
 
CircleGraphicsItem::CircleGraphicsItem(QGraphicsItem *parent)
    : QGraphicsItem(parent), m_size(QSizeF(40, 40)), m_borderColor(QColor(Qt::cyan)),
      m_dataColor(QColor(Qt::black))
{
    setFlag(QGraphicsItem::ItemIsFocusable);
}
 
CircleGraphicsItem::CircleGraphicsItem(const QSizeF &size, const QColor &dataColor, const QColor &borderColor, QGraphicsItem *parent)
    : QGraphicsItem(parent), m_size(size), m_borderColor(borderColor), m_dataColor(dataColor)
{
}
 
QSizeF CircleGraphicsItem::size() const
{
    return m_size;
}
 
void CircleGraphicsItem::resize(const QSize &size)
{
    m_size = size;
    update();
}
 
QColor CircleGraphicsItem::borderColor() const
{
    return m_borderColor;
}
 
void CircleGraphicsItem::setBorderColor(const QColor &borderColor)
{
    m_borderColor = borderColor;
    update();
}
 
QString CircleGraphicsItem::data() const
{
    return m_data;
}
 
void CircleGraphicsItem::setData(const QString &data)
{
    m_data = data;
    update();
}
 
QRectF CircleGraphicsItem::boundingRect() const
{
    return QRectF(0, 0, m_size.width(), m_size.height());
}
 void CircleGraphicsItem::setCoordinate(int a, int b)
 {
     x = a;
     y = b;
 }
 
void CircleGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    Q_UNUSED(option)
    Q_UNUSED(widget)
 
    QBrush br(m_borderColor, Qt::SolidPattern);
    QPen pen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap);
 
    painter->save();
 
    // Рисуем круг 40х40
 
    pen.setWidth(3);
    painter->setPen(pen);
    painter->setBrush(br);
    painter->drawEllipse(x, y, 40 , 40);
 
    // Пишем число
    paintText(painter, m_data);
 
    painter->restore();
}
 
void CircleGraphicsItem::paintText(QPainter *painter, const QString &text)
{
    QPen pen = painter->pen();
    pen.setColor(m_dataColor);
    painter->setPen(pen);
    painter->drawText(x+15, y+25, text);
}
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
mainwindow.cpp
 
 QGraphicsScene *PalletScene = new QGraphicsScene(0,0,500,200,this);
    ui->graphicsView->setScene(PalletScene);
 
CircleGraphicsItem *crl = new CircleGraphicsItem;
    crl->setBorderColor(color);
    crl->setData(QString::number(key));
    crl->setCoordinate(x, y);
    PalletScene->addItem(crl);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2016, 23:11
Ответы с готовыми решениями:

Запускается старая форма (изменения в редакторе не вступают в силу)
На учёбе написал программу (на Visual Studio 2010) пришёл домой изменил форму добавил...

Старая память + с Али не работает, отдельно работает и та и та
Итак: Интел Xenon на 775 сокете. (4 слота памяти, 2 канала) Было 4 Гб опереативы (две линейки по...

Не компилируется старая программа
Здравствуйте. У меня появилась проблема с запуском старой программы на С++ XE2 которая была...

Запускается старая программа codeblocks
Всем привет. Я программист давно не начинающий, и совсем уж не профессионал, программировал на dev...

3
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 6
22.05.2016, 06:27 2
Что за координаты? Попробуй кинуть на сцену другой какой-либо графический объект, попробуй создать новый проект добавить на форму график вью создать сцену и на неё кинуть ГрафикИтемПиксмап...
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 3
22.05.2016, 13:37  [ТС] 3
Координаты верные, тут ошибки быть не может. Изначально создавался новый проект, а пото уже проверялся старый. Не работает нигде.
PalletScene->addLine(0, 0, 20, 100, pen); работает

QGraphicsPixmapItem *it = new QGraphicsPixmapItem();
it->setPixmap(QPixmap("D:/Code/untitled/jp.jpg"));
PalletScene->addItem(it);
Такая конструкция тоже работает.
А то что приведено в первом сообщении никак не хочет работать. Для ясности приведу картинки, что было и что стало.
Миниатюры
Изменения в qt? Не работает старая программа   Изменения в qt? Не работает старая программа  
0
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 6
23.05.2016, 02:00 4
Цитата Сообщение от KatherineFrol Посмотреть сообщение
А то что приведено в первом сообщении никак не хочет работать.
Быть может нужна операция show()?) Скиньте полностью проект, я попробую запустить дома, делайте отладку, смотрите куда какая память течет, какие данные, проверьте быть может объект существует, но где-то там, попробуйте отлаживать через qDebug!
0
23.05.2016, 02:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2016, 02:00
Помогаю со студенческими работами здесь

После компиляции запускается старая программа
Всем привет! Глупый вопрос но все же задам Итак у меня был проект с формой прописал код вставил...

Комп не видит видеокарту, старая работает
Доброго времени суток,прошу помощи,имеется видеокарта GF 8800GT мать ее не видит биос пищит ...

Новая видеокарта работает хуже, чем старая.
Народ подскажите плиз в чём проблема мб у меня материнская плата ASUS P5S800-VM поставил новую...

Не работает старая веб камера и нет звука в скайпе
Доброго времени суток всем.. нужен совет.. может и не в подходящем месте размещаю тему, но даже не...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru