Я реализую режим фокусировки в QT QTextEdit, в котором я выделяю одну строку, в которой присутствует курсор. Пока я могу включить режим фокусировки, но когда я отключу режим фокусировки, я хочу, чтобы состояние было восстановлено до того, что было.Clear ExtraSelections Qt on slot disconnect
Функция, которая требует подключения и отключения является:
void MainWindow::onFocus_Mode_triggered()
{
QTextEdit *texed = qobject_cast<QTextEdit*>(ui->tabWidget->currentWidget());
if(ui->actionFocus_Mode->isChecked()){
connect(texed, SIGNAL(cursorPositionChanged()), this, SLOT(highlightCurrentLine()));
}
else {
disconnect(texed, SIGNAL(cursorPositionChanged()), this, SLOT(highlightCurrentLine())); //First disconnect and then call method to clear ExtraSelections
BacktoNormal(); //Help needed in implementing this
}
}
Теперь, когда пункт меню actionFocus_Mode проверяется, линия, где курсор находится в данный момент присутствует выделена желтым цветом с помощью функции, приведенной ниже.
void MainWindow::highlightCurrentLine() {
QTextEdit *texed = qobject_cast<QTextEdit*>(ui->tabWidget->currentWidget());
QList<QTextEdit::ExtraSelection> extraSelections;
QTextEdit::ExtraSelection selection;
QColor lineColor = QColor(Qt::yellow).lighter(160);
selection.format.setBackground(lineColor);
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
selection.cursor = texed->textCursor();
selection.cursor.clearSelection();
extraSelections.append(selection);
texed->setExtraSelections(extraSelections);
}
Так я могу выделить его в желтый цвет, но если (! Ui-> actionFocus_Mode-> IsChecked()), то есть, если пункт меню (режим фокусировки) снят, то я хотел бы вернуться к нормальной жизни Режим. Как реализовать функцию BacktoNormal().
Что я сейчас думаю, так это то, что я должен установить прозрачность линии или что-то вернуть ее в нормальное состояние (если это вообще возможно). Мне не удалось найти что-то связанное с этим. Любая помощь будет полезна, поскольку я полностью застрял в этой точке.
Совершенная. Спасибо. Черт! Это было так просто, и я думал совсем в другом направлении. – Bhavyanshu
@Bhavyanshu Добро пожаловать. :) Это место было создано для этой цели, иногда свежий взгляд других людей может сэкономить много времени. – Chernobyl