使QTextEdit资本化

Making a QTextEdit capital

本文关键字:资本化 QTextEdit      更新时间:2023-10-16

我正在尝试将所有文本转换为QTextEdit大写字母,但目前失败了。这是我的代码,它什么也不做。

void MainWindow::on_actionCapital_triggered()
{
    QTextCharFormat capital2;
    capital2.setFontCapitalization(QFont::AllUppercase);
    ui->textEdit->setCurrentCharFormat(capital2);
}

我是一名Java程序员,所以c ++不是我的强项

我也尝试了以下代码,但没有成功:

QFont font = ui->textEdit->font();
font.setCapitalization(QFont::AllUppercase);
ui->textEdit->setFont(font);

有人可以指出我正确的方向吗?

我认为这不是最优雅的解决方案,但它会完成它的工作:

void MainWindow::on_actionCapital_triggered()
{
    QTextCursor c = ui->textEdit->textCursor();
    int current = c.position();
    if(capital)
    {
        QTextCharFormat capital2;
        capital2.setFontCapitalization(QFont::MixedCase);
        ui->textEdit->selectAll();
        ui->textEdit->setCurrentCharFormat(capital2);
        capital = false;
    }
    else
    {
        QTextCharFormat capital2;
        capital2.setFontCapitalization(QFont::AllUppercase);
        ui->textEdit->selectAll();
        ui->textEdit->setCurrentCharFormat(capital2);
        capital = true;
    }
    c = ui->textEdit->textCursor();
    c.setPosition(current);
    c.setPosition(current, QTextCursor::KeepAnchor);
    ui->textEdit->setTextCursor(c);
}

使用此代码,您可以在所有大写和混合大小写之间切换。由于某种原因,setCurrentCharFormat 仅在选择文本时才有效。所以我必须获取当前的光标位置,然后选择全部应用字体大写,然后将光标设置回原来的位置。