zeilen anzeigen in QTextEdit und QScrollarea scrollt nicht
zeilen anzeigen in QTextEdit und QScrollarea scrollt nicht
Hi, habe zwei kurze Fragen:
Ich will in einer QTextEdit Zeilenlinien zwischen dem Text anzeigen. Nachdem der Text Scrollbar sein soll, kommt eine Textur in den Hintergrund nicht in Frage. Irgendjemand eine idee?
Mein zweites Problem ist folgendes: Ich habe ein Widget, abgeleitet von QScrollArea. Das Widget beinhaltet ein QVBoxLayout mit 2 QTextEdit areas. Ich will dass - sobald die rechte QTextEdit zu scrollen beginnen soll, das ganze Widget scrollt (und somit auch die linke QtextEdit). Dazu habe ich bei beiden Textedits VScrollPolicy abgedreht und das Widget von QScrollarea abgeleitet... Was mach ich noch falsch?
Thx
Michael
Ich will in einer QTextEdit Zeilenlinien zwischen dem Text anzeigen. Nachdem der Text Scrollbar sein soll, kommt eine Textur in den Hintergrund nicht in Frage. Irgendjemand eine idee?
Mein zweites Problem ist folgendes: Ich habe ein Widget, abgeleitet von QScrollArea. Das Widget beinhaltet ein QVBoxLayout mit 2 QTextEdit areas. Ich will dass - sobald die rechte QTextEdit zu scrollen beginnen soll, das ganze Widget scrollt (und somit auch die linke QtextEdit). Dazu habe ich bei beiden Textedits VScrollPolicy abgedreht und das Widget von QScrollarea abgeleitet... Was mach ich noch falsch?
Thx
Michael
Re: zeilen anzeigen in QTextEdit und QScrollarea scrollt nic
Eigentlich nur: eigene Klasse von QTextEdit ableiten, Paint-Methode um das Zeichnen der Zeilenlinien ergänzen.michbex hat geschrieben:Ich will in einer QTextEdit Zeilenlinien zwischen dem Text anzeigen. Nachdem der Text Scrollbar sein soll, kommt eine Textur in den Hintergrund nicht in Frage. Irgendjemand eine idee?
Hm... mal langsam zum mitmeiseln: ein QVBoxLayout mit zwei QTextEdit-Areas links und rechts... das müsste dann aber ein QHBoxLayout sein? Aber auch dann soll sowohl das Parent-Widget als auch das linke QTextEdit scrollen, wenn das rechte QTextEdit gescrollt wird? Dazu kann ich mir beim besten Willen kein Bedienkonzept vorstellen... erklär nochmal genauer!michbex hat geschrieben:Mein zweites Problem ist folgendes: Ich habe ein Widget, abgeleitet von QScrollArea. Das Widget beinhaltet ein QVBoxLayout mit 2 QTextEdit areas. Ich will dass - sobald die rechte QTextEdit zu scrollen beginnen soll, das ganze Widget scrollt (und somit auch die linke QtextEdit). Dazu habe ich bei beiden Textedits VScrollPolicy abgedreht und das Widget von QScrollarea abgeleitet...
Ok, war ein bisschen schlecht geschrieben:
QHBoxLayout, beinhaltet 2 QTextEdits. Das linke QTextEdit ist readonly und soll mitscrollen sobald die rechte QTextEdit gescrollt wird. Moechte einfach Zeilennummern fuer eine Scriptingarea anzeigen. Links Zeilennummern, rechts textarea.
Hoffe es ist jetzt verstaendlicher.
Thx anyway
Michael
QHBoxLayout, beinhaltet 2 QTextEdits. Das linke QTextEdit ist readonly und soll mitscrollen sobald die rechte QTextEdit gescrollt wird. Moechte einfach Zeilennummern fuer eine Scriptingarea anzeigen. Links Zeilennummern, rechts textarea.
Hoffe es ist jetzt verstaendlicher.
Thx anyway
Michael
Zum ueberschreiben der Paintmethode der QTextEdit Klasse:
Wenn ich das mache, wird mir das Widget angezeigt wie vorher, die Funktion wird aber aufgerufen. Warum wird nicht gezeichnet?
Michael
Code: Alles auswählen
void QTextEditSubclass::paintEvent ( QPaintEvent * event )
{
QPainter painter(this);
painter.setPen(Qt::red);
painter.setFont(QFont("Arial", 30));
painter.drawText(rect(), Qt::AlignCenter, "ABC");
}Michael
Nur mal so zur Anregung:
Code: Alles auswählen
class Edit : public QTextEdit
{
Q_OBJECT
public:
Edit(QWidget *parent=0);
~Edit();
void paintEvent(QPaintEvent *e);
};Code: Alles auswählen
Edit::Edit(QWidget *parent)
: QTextEdit(parent)
{
}
Edit::~Edit()
{
}
void Edit::paintEvent(QPaintEvent* e)
{
QTextEdit::paintEvent(e);
QPainter p(viewport());
p.setPen(QPen(QColor(192, 192, 192), 0, Qt::DashLine));
int y=0;
QTextBlock block=document()->begin();
while (block.isValid()) {
QTextLayout *layout=block.layout();
QRectF r=layout->boundingRect();
y+=r.height();
p.drawLine(r.left(), y, r.right(), y);
block=block.next();
}
}Hi,
erstmal vielen vielen Dank fuer die ausfuehrliche Hilfe. Es lag daran, dass ich keinen Viewport angegeben habe.
Mir gefaellt auch dein Ansatz, allerdings habe ich bei dieser Loesung das Problem, dass beim scrollen die linien ja bleiben und nur der text scrolled. Aehnlich als wenn ich die linien nur als background textur reingebe. Any ideas?
Text muss nur vertikal scrollbar sein.
Danke nochmal,
Michbex
erstmal vielen vielen Dank fuer die ausfuehrliche Hilfe. Es lag daran, dass ich keinen Viewport angegeben habe.
Mir gefaellt auch dein Ansatz, allerdings habe ich bei dieser Loesung das Problem, dass beim scrollen die linien ja bleiben und nur der text scrolled. Aehnlich als wenn ich die linien nur als background textur reingebe. Any ideas?
Text muss nur vertikal scrollbar sein.
Danke nochmal,
Michbex
geloest
thx,
scrollContentsBy hat mir geholfen!
mfg Michbex
scrollContentsBy hat mir geholfen!
mfg Michbex