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

Наследование от QGraphicsEllipseItem

14.01.2014, 20:18. Показов 1924. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В конструктор моего класса фишки передал координаты, QPen, QBrush. Потом в конструкторе устанавливаю
C++ (Qt)
1
2
3
setPen(pen);
    setBrush(brush);
    setPos(x,y);
Но я ещё хочу передать размеры фишки. Как мне в конструкторе установить размеры фишек?
И ещё хочу передать флаги как для любого итема setFlag();Как передать его?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2014, 20:18
Ответы с готовыми решениями:

QGraphicsEllipseItem massiv[100]= new QGraphicsEllipseItem. Возможно ли такая запись?
QGraphicsEllipseItem massiv= new QGraphicsEllipseItem. Возможно ли такая запись? И если нет, то как...

Слоты в классе унаследованном от QGraphicsEllipseItem. Контектное меню у QGraphicsEllipseItem
Здравствуйте, подскажите пожалуйста, как добавить слот и контекстное меню для класса...

Как унаследовать от QGraphicsEllipseItem?
Создаю и отображаю на сцене эллипс на базе класса QGraphicsEllipseItem. Все работает. Но мне нужно...

Поместить QGraphicsEllipseItem и QGraphicsRectItem в общий список QList<>
По отдельности нет проблем: QList&lt;QGraphicsEllipseItem*&gt; buf; buf &lt;&lt; new...

12
Автор FAQ
2732 / 1428 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
14.01.2014, 20:38 2
покажите полное объявление класса, передавайте так же как координаты в чем проблема?
0
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184
14.01.2014, 20:48  [ТС] 3
Чистый,
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef CHIPS_H
#define CHIPS_H
 
#include <QGraphicsEllipseItem>
#include <QColor>
#include <QBrush>
#include <QPen>
 
 
class chips : public QGraphicsEllipseItem
{
    
public:
    chips(qreal x, qreal y, const QPen &pen = QPen(), const QBrush &brush = QBrush());
   
signals:
 
public slots:
 
};
 
#endif // CHIPS_H
Как мне в конструкторе установить размеры фишек?А что на счет флагов?
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
14.01.2014, 21:06 4
Правильно наследоваться нужно так:
chips(qreal x, qreal y, const QPen &pen = QPen(), const QBrush &brush = QBrush(), QGraphicsItem *parent=0);

и в сорсе:
C++ (Qt)
1
2
3
4
chips::chips(qreal x, qreal y, const QPen &pen = QPen(), const QBrush &brush = QBrush(), QGraphicsItem *parent) : QGraphicsItem(parent)
{
setRect(QRectF(x, y, w, h));
}
1
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184
14.01.2014, 21:12  [ТС] 5
RazrFalcon, а как в конструктор передать флаги, что устанавливаются в setFlag() и setFlags()?
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
14.01.2014, 21:28 6
добавить QGraphicsItem::GraphicsItemFlags в список атрибутов конструктора
C++ (Qt)
1
2
QGraphicsItem::GraphicsItemFlags flags;
flags = QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable;
1
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184
15.01.2014, 18:09  [ТС] 7
Решил сделать немного по другому.
.h
C++ (Qt)
1
Chip(QRectF &rect, int color ,QGraphicsEllipseItem *parent = 0);
.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Chip::Chip(QRectF &rect, int color, QGraphicsEllipseItem *parent) :
    QGraphicsEllipseItem(parent)
{
    if(color == BLACK)
    {
        setBrush(Qt::black);
        setPen(Qt::black);
    }
    if(color == WHITE)
    {
        setBrush(Qt::white);
        setPen(Qt::black);
    }
    setRect(rect);
    setFlag(QGraphicsItem::ItemIsSelectable);
    setFlag(QGraphicsItem::ItemIsMovable);
}
Вызываю
C++ (Qt)
1
Chip tmp(QRectF(10,10,SIZECHIP, SIZECHIP),BLACK);
Ошибка такая:
no matching function for call to 'Chip::Chip(QRectF, int)'
Почему??

Добавлено через 3 часа 15 минут
В чем проблема?)
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
15.01.2014, 18:24 8
Цитата Сообщение от knf Посмотреть сообщение
C++ (Qt)
1
Chip::Chip(QRectF &rect, int color, QGraphicsEllipseItem *parent)
Цитата Сообщение от knf Посмотреть сообщение
C++ (Qt)
1
Chip tmp(QRectF(10,10,SIZECHIP, SIZECHIP),BLACK);
Забыли 3ий параметр в вызове конструктора
0
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184
15.01.2014, 19:05  [ТС] 9
Flassie, Flassie, И что туда передавать?
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
15.01.2014, 19:19 10
Цитата Сообщение от knf Посмотреть сообщение
И что туда передавать?
Ну вообще, это ваш конструктор, кто знает, что вы хотели с ним сделать...

Вот, каким он должен быть у вас, как я считаю:
C++ (Qt)
1
Chip::Chip(QRectF &rect, int color, QGraphicsItem *parent = 0)
0
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184
15.01.2014, 19:23  [ТС] 11
Flassie, в .h он у меня как раз такой

Добавлено через 2 минуты
Flassie, Мне просто сказали, как правильно наследовать от QGraphicsEllipseItem.
Кто может объяснить нубу, зачем последний параметр?
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
15.01.2014, 19:27 12
Цитата Сообщение от knf Посмотреть сообщение
Flassie, в .h он у меня как раз такой

Добавлено через 2 минуты
Flassie, Мне просто сказали, как правильно наследовать от QGraphicsEllipseItem.
Кто может объяснить нубу, зачем последний параметр?
Затем же, зачем и всем наследованным классам от QWidget:
Если вам нужно разместить QLabel на окне - вы должны указать в качестве родителя QLabel'а это самое окно

Так же, как я понимаю, и с QGraphicsItem'ами
1
17 / 17 / 8
Регистрация: 18.09.2012
Сообщений: 184
15.01.2014, 19:45  [ТС] 13
Flassie, Нашел чем-то похожее
C++ (Qt)
1
MyClass(QString text, QObject *parent = 0);
Вот так вызывают. И последний параметр не пишут
C++ (Qt)
1
MyClass str("foo");
По какой причине у меня требует?
0
15.01.2014, 19:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2014, 19:45
Помогаю со студенческими работами здесь

Как узнать координаты графических элементов QGraphicsEllipseItem?
У меня есть QList&lt;QGraphicsItem *&gt; list_itm; куда я каждый раз, когда рисую новый элемент, добавляю...

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна...

Заменить наследование классов на наследование интерфейсов
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int...

Наследование интерфейса и наследование реализации
Начал читать книгу GoF и сразу же в предисловии попал в тупик. Чем отличается наследование...


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

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