setAlignment does not work again
I am trying to align the text inside a QTextEdit.
At bound the action menu to the setAlignment() slot of QTextEdit.
But at runtime, besides the fact that no alignment takes place, I got the errors:
Object::connect: No such slot QTextEdit::setAlignment(Qt::AlignRight)
and so on.
The signla/slot binding is:
connect(act_alignright, SIGNAL(triggered(bool)), textEdit,SLOT(setAlignment(Qt::AlignRight)));
Any reply will be very appreciated
Re: setAlignment does not work again
first of all it won't work because
Quote:
The signals and slots mechanism is type safe: The signature of a signal must match the signature of the receiving slot.
so it's the reason why you get error
http://doc.trolltech.com/4.4/signalsandslots.html
Re: setAlignment does not work again
Don't understan:
the slot setAlignement is a slot of textEdit and act_alignright is a signal of a menu.
What am I missing?
G
Re: setAlignment does not work again
I solved. It seems the it's enough to call a callback from the connect function:
connect(act_alignright, SIGNAL(triggered(bool)), this, SLOT(right()));
connect(act_alignleft, SIGNAL(triggered(bool)), this, SLOT(left()));
connect(act_aligncenter, SIGNAL(triggered(bool)), this, SLOT(center()));
And then use setAlignment inside the callback.
Re: setAlignment does not work again
Quote:
Originally Posted by
giusepped
Don't understan:
the slot setAlignement is a slot of textEdit and act_alignright is a signal of a menu.
What am I missing?
G
Quote:
Originally Posted by
giusepped
Code:
connect(act_alignright, SIGNAL(triggered(bool)), // <---this is bool
textEdit,SLOT(setAlignment(Qt::AlignRight))); // <--this is not a bool, it is also a value and not a variable
You really need to read/understand: http://doc.trolltech.com/4.4/signalsandslots.html
hope it helps
Re: setAlignment does not work again
I have problem with QTextEdit setAlignment()
Code:
#ifndef TEDIT_H
#define TEDIT_H
#include <QWidget>
{
Q_OBJECT
public:
TEdit();
virtual ~TEdit();
private slots:
void makeBold();
void makeItalic();
void makeUnderline();
void setAlignLeft();
void setAlignCenter();
void setAlignRight();
private:
};
#endif /* TEDIT_H_ */
implement
Code:
#include <QtGui>
#include "tedit.h"
TEdit::TEdit()
{
resize(800,600);
textBold
= new QAction(QIcon(":images/format_text_bold.png"),tr
("B"),
this);
connect(textBold, SIGNAL(triggered()), this, SLOT(makeBold()));
textItalic
= new QAction(QIcon(":images/format_text_italic.png"),tr
("I"),
this);
connect(textItalic, SIGNAL(triggered()), this, SLOT(makeItalic()));
textUnderline
= new QAction(QIcon(":images/format_text_underline.png"),tr
("U"),
this);
connect(textUnderline, SIGNAL(triggered()), this, SLOT(makeUnderline()));
textLeft
= new QAction(QIcon(":images/format_justify_left.png"),tr
("Align Left"),
this);
connect(textLeft, SIGNAL(triggered()), this, SLOT(setAlignLeft()));
textCenter
= new QAction(QIcon(":images/format_justify_center.png"),tr
("Align Center"),
this);
connect(textLeft, SIGNAL(triggered()), this, SLOT(setAlignCenter()));
textRight
= new QAction(QIcon(":images/format_justify_right.png"),tr
("Align Right"),
this);
connect(textLeft, SIGNAL(triggered()), this, SLOT(setAlignRight()));
toolBar->addAction(textBold);
toolBar->addAction(textItalic);
toolBar->addAction(textUnderline);
toolBar->addSeparator();
toolBar->addAction(textLeft);
toolBar->addAction(textCenter);
toolBar->addAction(textRight);
ml->setMargin(1);
ml->setSpacing(0);
ml->addWidget(toolBar);
ml->addWidget(te);
setLayout(ml);
}
void TEdit::makeBold()
{
if(cursor.
charFormat().
fontWeight()==QFont::Normal) {
boldFormat.
setFontWeight(QFont::Bold);
}
else
{
boldFormat.
setFontWeight(QFont::Normal);
}
cursor.mergeCharFormat(boldFormat);
}
void TEdit::makeItalic()
{
if(cursor.charFormat().fontItalic()==false)
{
italicFormat.setFontItalic(true);
}
else
{
italicFormat.setFontItalic(false);
}
cursor.mergeCharFormat(italicFormat);
}
void TEdit::makeUnderline()
{
if(cursor.charFormat().fontUnderline()==false)
{
underlineFormat.setFontUnderline(true);
}
else
{
underlineFormat.setFontUnderline(false);
}
cursor.mergeCharFormat(underlineFormat);
}
void TEdit::setAlignLeft()
{
if(!cursor.hasSelection())
{
}
blockFmt.setAlignment(Qt::AlignLeft);
cursor.mergeBlockFormat(blockFmt);
}
void TEdit::setAlignRight()
{
if(!cursor.hasSelection())
{
}
blockFmt.setAlignment(Qt::AlignRight);
cursor.mergeBlockFormat(blockFmt);
}
void TEdit::setAlignCenter()
{
if(!cursor.hasSelection())
{
}
blockFmt.setAlignment(Qt::AlignCenter);
cursor.mergeBlockFormat(blockFmt);
}
TEdit::~TEdit()
{
// TODO Auto-generated destructor stub
}
compilation done, no errors or warnings
but if i clicked on toolbar button to align left
text align to right, and alignCenter, alignRight, alignLeft do nothing
O_o
also i try
Code:
void TEdit::setAlignLeft()
{
te->setAlignment(Qt::AlignLeft);
}
but not work
Re: setAlignment does not work again
sorry problem fixed )))
3 times textLeft )))