ich möchte zum Einstieg einen einfachen Editor schreiben. Dazu habe ich mir QTextEdit ausgesucht. Außerdem soll "abcd" unterstrichen dargestellt werden (das Prinzip vom Syntax-Highlighting eben).
Es gibt ein QMainWindow, das hat setCentralWidget(QTextEdit). Ich habe mir gedacht, sobald sich der Text des QTextEdit's veränder hat, lasse ich einen "Parser" drüber laufen, der daraus dann HTML erzeugt.
Code: Alles auswählen
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
textEdit = new TextEdit();
// sobald sich der Text ändert -> an refreshHtml() abgeben.
connect(textEdit, SIGNAL(textChanged()),
this, SLOT(refreshHtml()));
setCentralWidget(textEdit);
}Code: Alles auswählen
// private slots:
void MainWindow::refreshHtml()
{
// Text holen und "parsen"
QString tmp = textEdit->toHtml();
tmp.replace(QRegExp("abcd"), "<u>abcd</u>");
// Text in QTextEdit schreiben...
textEdit->setHtml(tmp);
// ...nur hier stürzt das Programm ab.
}
Meine Vermutung ist, dass ich einen Slot nicht so einfach in einem anderen aufrufen kann. Oder was habe ich da falsch gemacht? Muss ich statdessen von refreshHtml nochmal ein Signal absenden, dass ich dann mit dem setHtml-Slot verbinde?
Das wäre schon relativ umständlich.