Added alignment for text item

git-svn-id: https://svn.code.sf.net/p/qlscribe/svn/trunk@172 cac9541e-1b8d-4bfa-827e-589bba606050
This commit is contained in:
ruglory
2011-01-04 02:35:32 +00:00
parent 527033561e
commit 82e4a20b80
5 changed files with 233 additions and 110 deletions
+24 -9
View File
@@ -22,8 +22,8 @@
#include "ui_qdialogtext.h"
#include "qcdscene.h"
#include "qdialogsettings.h"
#include "qlighttextitem.h"
#include <QGraphicsSimpleTextItem>
#include <QFontDialog>
#include <QColorDialog>
@@ -55,19 +55,20 @@ void QDialogText::changeEvent(QEvent *e)
bool QDialogText::exec( QGraphicsItem *graphicsItem )
{
QGraphicsSimpleTextItem *item = dynamic_cast< QGraphicsSimpleTextItem * >( graphicsItem );
QLightTextItem *item = dynamic_cast< QLightTextItem * >( graphicsItem );
if( !item )
return false;
QCDScene scene;
m_ui->cdView->setScene( &scene );
m_item = new QGraphicsSimpleTextItem;
m_item = new QLightTextItem;
m_item->setPos( item->pos() );
m_item->setText( item->text() );
m_item->setFont( item->font() );
m_item->setBrush( item->brush() );
m_item->setColor( item->color() );
m_item->setTransform( item->transform() );
m_item->setAlignment( item->alignment() );
scene.addItem( m_item, true );
@@ -75,19 +76,27 @@ bool QDialogText::exec( QGraphicsItem *graphicsItem )
m_ui->spinY->setValue( m_item->pos().y() );
m_ui->textEdit->setPlainText( m_item->text() );
int index = 0;
if( m_item->alignment() == Qt::AlignRight ) index = 2;
else if( m_item->alignment() == Qt::AlignCenter ) index = 1;
m_ui->comboAlignment->setCurrentIndex( index );
colorChanged();
fontChanged();
connect( m_ui->textEdit, SIGNAL(textChanged()), this, SLOT(textChanged()) );
connect( m_ui->spinX, SIGNAL(valueChanged(double)), this, SLOT(posChanged()) );
connect( m_ui->spinY, SIGNAL(valueChanged(double)), this, SLOT(posChanged()) );
connect( m_ui->comboAlignment, SIGNAL(currentIndexChanged(int)),this, SLOT(alignChanged()) );
if( QDialog::exec() == Rejected ) return false;
item->setPos( m_item->pos() );
item->setText( m_item->text() );
item->setFont( m_item->font() );
item->setBrush( m_item->brush() );
item->setColor( m_item->color() );
item->setAlignment( m_item->alignment() );
return true;
}
@@ -105,11 +114,11 @@ void QDialogText::onFont()
void QDialogText::onColor()
{
QColor color = QColorDialog::getColor( m_item->brush().color(), this );
QColor color = QColorDialog::getColor( m_item->color(), this );
if( color.isValid() ){
m_item->setBrush( color );
m_item->setColor( color );
colorChanged();
}
}
}
void QDialogText::fontChanged()
@@ -120,7 +129,7 @@ void QDialogText::fontChanged()
void QDialogText::colorChanged()
{
QPixmap pixmap( m_ui->colorWidget->size() );
pixmap.fill( m_item->brush().color() );
pixmap.fill( m_item->color() );
m_ui->colorWidget->setPixmap( pixmap );
}
@@ -134,3 +143,9 @@ void QDialogText::posChanged()
m_item->setPos( m_ui->spinX->value(), m_ui->spinY->value() );
}
void QDialogText::alignChanged()
{
Qt::Alignment align[] = { Qt::AlignLeft, Qt::AlignCenter, Qt::AlignRight };
m_item->setAlignment( align[ m_ui->comboAlignment->currentIndex() ] );
}
+5 -4
View File
@@ -16,7 +16,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
$Id:$ */
$Id$ */
#ifndef QDIALOGTEXT_H
#define QDIALOGTEXT_H
@@ -27,7 +27,7 @@ namespace Ui {
class QDialogText;
}
class QGraphicsSimpleTextItem;
class QLightTextItem;
class QDialogText : public QItemDialog {
Q_OBJECT
@@ -48,10 +48,11 @@ private slots:
void fontChanged();
void colorChanged();
void posChanged();
void alignChanged();
private:
Ui::QDialogText *m_ui;
QGraphicsSimpleTextItem *m_item;
Ui::QDialogText *m_ui;
QLightTextItem *m_item;
};
#endif // QDIALOGTEXT_H
+127 -92
View File
@@ -1,10 +1,11 @@
<ui version="4.0" >
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>QDialogText</class>
<widget class="QDialog" name="QDialogText" >
<property name="enabled" >
<widget class="QDialog" name="QDialogText">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry" >
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
@@ -12,70 +13,70 @@
<height>627</height>
</rect>
</property>
<property name="windowTitle" >
<property name="windowTitle">
<string>Text properties</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_3" >
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<layout class="QVBoxLayout" name="verticalLayout" >
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame" >
<property name="frameShape" >
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow" >
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="lineWidth" >
<property name="lineWidth">
<number>3</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" >
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout" >
<property name="sizeConstraint" >
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum>
</property>
<property name="bottomMargin" >
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QFormLayout" name="formLayout" >
<item row="0" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>X:</string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QDoubleSpinBox" name="spinX" >
<property name="decimals" >
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="spinX">
<property name="decimals">
<number>1</number>
</property>
<property name="minimum" >
<property name="minimum">
<double>-61.000000000000000</double>
</property>
<property name="maximum" >
<property name="maximum">
<double>61.000000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label_2" >
<property name="text" >
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Y:</string>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QDoubleSpinBox" name="spinY" >
<property name="decimals" >
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="spinY">
<property name="decimals">
<number>1</number>
</property>
<property name="minimum" >
<property name="minimum">
<double>-61.000000000000000</double>
</property>
<property name="maximum" >
<property name="maximum">
<double>61.000000000000000</double>
</property>
</widget>
@@ -83,11 +84,11 @@
</layout>
</item>
<item>
<spacer name="horizontalSpacer" >
<property name="orientation" >
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0" >
<property name="sizeHint" stdset="0">
<size>
<width>13</width>
<height>20</height>
@@ -96,70 +97,104 @@
</spacer>
</item>
<item>
<layout class="QFormLayout" name="formLayout_3" >
<item row="0" column="0" >
<widget class="QLabel" name="label_5" >
<property name="text" >
<layout class="QFormLayout" name="formLayout_3">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Font:</string>
</property>
</widget>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label_6" >
<property name="text" >
<item row="0" column="1">
<widget class="QFontComboBox" name="fontName">
<property name="enabled">
<bool>false</bool>
</property>
<property name="editable">
<bool>false</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Color:</string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QFontComboBox" name="fontName" >
<property name="enabled" >
<bool>false</bool>
</property>
<property name="editable" >
<bool>false</bool>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QLabel" name="colorWidget" >
<property name="minimumSize" >
<item row="3" column="1">
<widget class="QLabel" name="colorWidget">
<property name="minimumSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="maximumSize" >
<property name="maximumSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
<property name="baseSize" >
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="frameShape" >
<property name="frameShape">
<enum>QFrame::Box</enum>
</property>
<property name="text" >
</property>
<property name="text">
<string/>
</property>
<property name="textFormat" >
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="comboAlignment" >
<property name="currentIndex" >
<number>0</number>
</property>
<item>
<property name="text" >
<string>Left</string>
</property>
</item>
<item>
<property name="text" >
<string>Center</string>
</property>
</item>
<item>
<property name="text" >
<string>Right</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Alignment:</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="horizontalSpacer_2" >
<property name="orientation" >
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0" >
<property name="sizeHint" stdset="0">
<size>
<width>17</width>
<height>20</height>
@@ -168,20 +203,20 @@
</spacer>
</item>
<item>
<layout class="QFormLayout" name="formLayout_4" >
<property name="fieldGrowthPolicy" >
<layout class="QFormLayout" name="formLayout_4">
<property name="fieldGrowthPolicy">
<enum>QFormLayout::ExpandingFieldsGrow</enum>
</property>
<item row="1" column="0" >
<widget class="QPushButton" name="btnColor" >
<property name="text" >
<item row="1" column="0">
<widget class="QPushButton" name="btnColor">
<property name="text">
<string>Color...</string>
</property>
</widget>
</item>
<item row="0" column="0" >
<widget class="QPushButton" name="btnFont" >
<property name="text" >
<item row="0" column="0">
<widget class="QPushButton" name="btnFont">
<property name="text">
<string>Font...</string>
</property>
</widget>
@@ -191,26 +226,26 @@
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2" >
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label_3" >
<property name="text" >
<widget class="QLabel" name="label_3">
<property name="text">
<string>Text</string>
</property>
<property name="alignment" >
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
<item>
<widget class="QPlainTextEdit" name="textEdit" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<widget class="QPlainTextEdit" name="textEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize" >
<property name="maximumSize">
<size>
<width>16777215</width>
<height>50</height>
@@ -221,20 +256,20 @@
</layout>
</item>
<item>
<widget class="QCDView" name="cdView" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
<widget class="QCDView" name="cdView">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>2</verstretch>
</sizepolicy>
</property>
<property name="baseSize" >
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="interactive" >
<property name="interactive">
<bool>false</bool>
</property>
</widget>
@@ -243,11 +278,11 @@
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox" >
<property name="orientation" >
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
@@ -278,11 +313,11 @@
<receiver>QDialogText</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel" >
<hint type="sourcelabel">
<x>258</x>
<y>582</y>
</hint>
<hint type="destinationlabel" >
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
@@ -294,11 +329,11 @@
<receiver>QDialogText</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel" >
<hint type="sourcelabel">
<x>326</x>
<y>582</y>
</hint>
<hint type="destinationlabel" >
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
+64 -5
View File
@@ -25,6 +25,7 @@
#include <QXmlStreamWriter>
#include <QXmlStreamReader>
#include <QTextDocument>
QLightTextItem::QLightTextItem()
@@ -39,6 +40,58 @@ QVariant QLightTextItem::itemChange( GraphicsItemChange change, const QVariant &
return value;
}
QString QLightTextItem::text() const
{
return QGraphicsSimpleTextItem::text();
}
QColor QLightTextItem::color() const
{
return this->brush().color();
}
Qt::Alignment QLightTextItem::alignment() const
{
return m_alignment;
}
void QLightTextItem::setText( const QString &txt )
{
QGraphicsSimpleTextItem::setText( txt );
updateTrans();
}
void QLightTextItem::setFont( const QFont &font )
{
QGraphicsSimpleTextItem::setFont( font );
updateTrans();
}
void QLightTextItem::setColor( const QColor &color )
{
this->setBrush( color );
}
void QLightTextItem::setAlignment( Qt::Alignment align )
{
m_alignment = align;
updateTrans();
}
void QLightTextItem::updateTrans()
{
double size = this->boundingRect().width();
QTransform trans;
trans.scale( 0.5, 0.5 );
switch( m_alignment ) {
case Qt::AlignRight : trans.translate( -size, 0 ); break;
case Qt::AlignCenter : trans.translate( -size / 2.0, 0 ); break;
}
this->setTransform( trans );
}
RegisterController< QShapeControllerText > regControllerText;
@@ -69,20 +122,21 @@ QItemDialog *QShapeControllerText::createDialog( QWidget *parent ) const
void QShapeControllerText::writeData( QXmlStreamWriter &writer, const QGraphicsItem *item ) const
{
const QGraphicsSimpleTextItem *textItem = static_cast< const QGraphicsSimpleTextItem * >( item );
const QLightTextItem *textItem = static_cast< const QLightTextItem * >( item );
writer.writeEmptyElement( "pos" );
writer.writeAttribute( QXmlStreamAttribute( "x", QString::number( textItem->pos().x() ) ) );
writer.writeAttribute( QXmlStreamAttribute( "y", QString::number( textItem->pos().y() ) ) );
writer.writeAttribute( QXmlStreamAttribute( "z", QString::number( textItem->zValue() ) ) );
writer.writeTextElement( "font", textItem->font().toString() );
writer.writeTextElement( "color", textItem->brush().color().name() );
writer.writeTextElement( "color", textItem->color().name() );
writer.writeTextElement( "text", textItem->text() );
writer.writeTextElement( "alignment", QString::number( textItem->alignment() ) );
}
void QShapeControllerText::replace( QGraphicsItem *item, const QString &from, const QString &to ) const
{
QGraphicsSimpleTextItem *textItem = static_cast< QGraphicsSimpleTextItem * >( item );
QLightTextItem *textItem = static_cast< QLightTextItem * >( item );
bool placeHolder = textItem->text().left( 1 ) == "?" && textItem->text().right( 1 ) == "?";
@@ -102,7 +156,7 @@ void QShapeControllerText::readData( const QString &element,
const QString &data,
QGraphicsItem *item ) const
{
QGraphicsSimpleTextItem *textItem = static_cast< QGraphicsSimpleTextItem * >( item );
QLightTextItem *textItem = static_cast< QLightTextItem * >( item );
if( element == "pos" ) {
textItem->setPos( attrs.value( "x" ).toString().toDouble(),
@@ -119,7 +173,7 @@ void QShapeControllerText::readData( const QString &element,
}
if( element == "color" ) {
textItem->setBrush( QColor( data ) );
textItem->setColor( QColor( data ) );
return;
}
@@ -127,4 +181,9 @@ void QShapeControllerText::readData( const QString &element,
textItem->setText( data );
return;
}
if( element == "alignment" ) {
textItem->setAlignment( Qt::Alignment( data.toInt() ) );
return;
}
}
+13
View File
@@ -30,9 +30,22 @@ class QLightTextItem : public QGraphicsSimpleTextItem
public:
QLightTextItem();
QString text() const;
Qt::Alignment alignment() const;
QColor color() const;
void setText( const QString &txt );
void setColor( const QColor &color );
void setFont( const QFont &font );
void setAlignment( Qt::Alignment align );
protected:
virtual QVariant itemChange ( GraphicsItemChange change, const QVariant & value );
private:
void updateTrans();
Qt::Alignment m_alignment;
};
class QShapeControllerText : public QShapeController {