mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Test font size in pixel for DynamicElementTextItem
This commit is contained in:
@@ -21,6 +21,7 @@
|
|||||||
#include "../diagramcommands.h"
|
#include "../diagramcommands.h"
|
||||||
#include "../qetapp.h"
|
#include "../qetapp.h"
|
||||||
#include "../richtext/richtexteditor_p.h"
|
#include "../richtext/richtexteditor_p.h"
|
||||||
|
#include "../utils/qetutils.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief DiagramTextItem::DiagramTextItem
|
@brief DiagramTextItem::DiagramTextItem
|
||||||
@@ -157,6 +158,14 @@ QPointF DiagramTextItem::mapMovementFromParent(const QPointF &movement) const
|
|||||||
return(local_movement_point - local_origin);
|
return(local_movement_point - local_origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief DiagramTextItem::setFont
|
||||||
|
* Reimplemented from QGraphicsTextItem.
|
||||||
|
* This function ensure alignment is unchanged after @a font was set.
|
||||||
|
* If not set, the font size is set in pixel instead of point
|
||||||
|
* and emit fontChanged.
|
||||||
|
* @param font
|
||||||
|
*/
|
||||||
void DiagramTextItem::setFont(const QFont &font)
|
void DiagramTextItem::setFont(const QFont &font)
|
||||||
{
|
{
|
||||||
if (this->font() == font) {
|
if (this->font() == font) {
|
||||||
@@ -165,7 +174,8 @@ void DiagramTextItem::setFont(const QFont &font)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
prepareAlignment();
|
prepareAlignment();
|
||||||
QGraphicsTextItem::setFont(font);
|
//Make sure font size is in pixel
|
||||||
|
QGraphicsTextItem::setFont(QETUtils::pointSizeToPixelSize(font));
|
||||||
finishAlignment();
|
finishAlignment();
|
||||||
emit fontChanged(font);
|
emit fontChanged(font);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include "crossrefitem.h"
|
#include "crossrefitem.h"
|
||||||
#include "element.h"
|
#include "element.h"
|
||||||
#include "elementtextitemgroup.h"
|
#include "elementtextitemgroup.h"
|
||||||
|
#include "../utils/qetutils.h"
|
||||||
|
|
||||||
#include <QDomDocument>
|
#include <QDomDocument>
|
||||||
#include <QDomElement>
|
#include <QDomElement>
|
||||||
@@ -168,6 +169,7 @@ void DynamicElementTextItem::fromXml(const QDomElement &dom_elmt)
|
|||||||
{
|
{
|
||||||
QFont font;
|
QFont font;
|
||||||
font.fromString(dom_elmt.attribute("font"));
|
font.fromString(dom_elmt.attribute("font"));
|
||||||
|
font = QETUtils::pointSizeToPixelSize(font); //In case of font was previously saved in point size
|
||||||
setFont(font);
|
setFont(font);
|
||||||
}
|
}
|
||||||
else //Retrocompatibility during the 0.7 dev because the font property was added lately. TODO remove this part in futur
|
else //Retrocompatibility during the 0.7 dev because the font property was added lately. TODO remove this part in futur
|
||||||
@@ -175,6 +177,7 @@ void DynamicElementTextItem::fromXml(const QDomElement &dom_elmt)
|
|||||||
QFont font_(dom_elmt.attribute("font_family", font().family()),
|
QFont font_(dom_elmt.attribute("font_family", font().family()),
|
||||||
dom_elmt.attribute("font_size", QString::number(9)).toInt());
|
dom_elmt.attribute("font_size", QString::number(9)).toInt());
|
||||||
font_.setStyleName(dom_elmt.attribute("dynamicitemstyle", font().styleName()));
|
font_.setStyleName(dom_elmt.attribute("dynamicitemstyle", font().styleName()));
|
||||||
|
font_ = QETUtils::pointSizeToPixelSize(font_);
|
||||||
setFont(font_);
|
setFont(font_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ QList<QStandardItem *> DynamicElementTextModel::itemsForText(
|
|||||||
size->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
size->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||||
|
|
||||||
QStandardItem *siza = new QStandardItem();
|
QStandardItem *siza = new QStandardItem();
|
||||||
siza->setData(deti->font().pointSize(), Qt::EditRole);
|
siza->setData(deti->font().pixelSize(), Qt::EditRole);
|
||||||
siza->setData(DynamicElementTextModel::size, Qt::UserRole+1);
|
siza->setData(DynamicElementTextModel::size, Qt::UserRole+1);
|
||||||
siza->setFlags(Qt::ItemIsSelectable
|
siza->setFlags(Qt::ItemIsSelectable
|
||||||
| Qt::ItemIsEnabled
|
| Qt::ItemIsEnabled
|
||||||
@@ -555,10 +555,10 @@ QUndoCommand *DynamicElementTextModel::undoForEditedText(
|
|||||||
}
|
}
|
||||||
|
|
||||||
int fs = text_qsi->child(size_txt_row,1)->data(Qt::EditRole).toInt();
|
int fs = text_qsi->child(size_txt_row,1)->data(Qt::EditRole).toInt();
|
||||||
if (fs != deti->font().pointSize())
|
if (fs != deti->font().pixelSize())
|
||||||
{
|
{
|
||||||
QFont font = deti->font();
|
QFont font = deti->font();
|
||||||
font.setPointSize(fs);
|
font.setPixelSize(fs);
|
||||||
QPropertyUndoCommand *quc = new QPropertyUndoCommand(deti, "font", QVariant(deti->font()), QVariant(font), undo);
|
QPropertyUndoCommand *quc = new QPropertyUndoCommand(deti, "font", QVariant(deti->font()), QVariant(font), undo);
|
||||||
quc->setText(tr("Modifier la taille d'un texte d'élément"));
|
quc->setText(tr("Modifier la taille d'un texte d'élément"));
|
||||||
}
|
}
|
||||||
@@ -1493,7 +1493,7 @@ void DynamicElementTextModel::updateDataFromText(DynamicElementTextItem *deti,
|
|||||||
QFont f(deti->font());
|
QFont f(deti->font());
|
||||||
qsi->child(font_txt_row,1)->setData(f.family(), Qt::EditRole);
|
qsi->child(font_txt_row,1)->setData(f.family(), Qt::EditRole);
|
||||||
qsi->child(font_txt_row,1)->setData(f, Qt::UserRole+2);
|
qsi->child(font_txt_row,1)->setData(f, Qt::UserRole+2);
|
||||||
qsi->child(size_txt_row,1)->setData(f.pointSize(), Qt::EditRole);
|
qsi->child(size_txt_row,1)->setData(f.pixelSize(), Qt::EditRole);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case color:
|
case color:
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "qetutils.h"
|
#include "qetutils.h"
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
|
#include <QFontInfo>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@brief QETUtils::marginsToString
|
@brief QETUtils::marginsToString
|
||||||
@@ -57,3 +58,37 @@ QMargins QETUtils::marginsFromString(const QString &string)
|
|||||||
|
|
||||||
return margins;
|
return margins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief QETUtils::pointSizeToPixelSize
|
||||||
|
* @param font
|
||||||
|
* @return the same font with size set in pixel instead of point.
|
||||||
|
*/
|
||||||
|
QFont QETUtils::pointSizeToPixelSize(const QFont &font)
|
||||||
|
{
|
||||||
|
if (font.pointSize())
|
||||||
|
{
|
||||||
|
QFont f = font;
|
||||||
|
QFontInfo fi(f);
|
||||||
|
f.setPixelSize(fi.pixelSize());
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
return font;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief QETUtils::pixelSizeToPointSize
|
||||||
|
* @param font
|
||||||
|
* @return the same font with size set in point instead of pixel.
|
||||||
|
*/
|
||||||
|
QFont QETUtils::pixelSizeToPointSize(const QFont &font)
|
||||||
|
{
|
||||||
|
if (font.pixelSize())
|
||||||
|
{
|
||||||
|
QFont f = font;
|
||||||
|
QFontInfo fi(f);
|
||||||
|
f.setPointSizeF(fi.pointSizeF());
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
return font;
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,12 +19,16 @@
|
|||||||
#define QETUTILS_H
|
#define QETUTILS_H
|
||||||
|
|
||||||
#include <QMargins>
|
#include <QMargins>
|
||||||
|
#include <QFont>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Provide some small utils function
|
Provide some small utils function
|
||||||
*/
|
*/
|
||||||
namespace QETUtils
|
namespace QETUtils
|
||||||
{
|
{
|
||||||
|
QFont pointSizeToPixelSize(const QFont &font);
|
||||||
|
QFont pixelSizeToPointSize(const QFont &font);
|
||||||
|
|
||||||
QString marginsToString(const QMargins &margins);
|
QString marginsToString(const QMargins &margins);
|
||||||
QMargins marginsFromString(const QString &string);
|
QMargins marginsFromString(const QString &string);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user