Наследование QGraphicsTextItem. Странное поведение
Я создал класс, унаследованный от QGraphicsTextItem
, Объект этого класса должен быть подвижным и должен посылать сигнал, когда MouseButton включен.
class MyTextItem: public QObject, public QGraphicsTextItem
{
Q_OBJECT
public:
MyTextItem(QObject* Object, QString str1): QGraphicsTextItem(str1), mRef(Object){}
virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent* event);
QObject* mRef;
signals:
void sendSignal(int x, int y);
Затем я создаю объект:
MyTextItem* label = new MyTextItem(NULL, "QwertyuiopAsdfghjkl");
label->setPos(p);
label->setFlag(QGraphicsItem::ItemIsMovable, true);
И все в порядке. Но когда я добавлю:
QFont f;
f.setBold(false);
f.setItalic(false);
f.setPixelSize(16);
f.setFamily("Arial");
f.setLetterSpacing(QFont::AbsoluteSpacing, 0.1);
label->setFont(f);
//
scene()->addItem(label);
Мой тест обрезался (шрифт больше, но ширина объекта без изменений)! Зачем?. Когда я использую QGraphicsTextItem
вместо MyTextItem
Все хорошо.
Как обновить размер элемента после увеличения шрифта?
Спасибо!
2 ответа
Вот Это Да! А написал
class PolygonLabel: public QGraphicsTextItem, public QObject
вместо
class PolygonLabel: public QObject, public QGraphicsTextItem
и проблема была сделана!
Для начала, а не множественное наследование, наследовать от QGraphicsObject
, QGraphicsObject
Класс обеспечивает базовый класс для всех графических элементов, которые требуют сигналов, слотов и свойств.
Причина, по которой ваш текст обрезается, также может быть связана с тем, что вы не изменили boundingRect
функция, которая возвращает ограничивающий прямоугольник области, в которой вы рисуете. Смотрите здесь.