0

すべてのテキストを 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);

誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

0

私はそれが最もエレガントな解決策ではないことを理解しましたが、それはその仕事をします:

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 はテキストが選択されている場合にのみ機能します。そのため、現在のカーソル位置を取得し、すべてを選択して FontCapitalization を適用し、カーソルを元の位置に戻す必要がありました。

于 2013-09-26T21:56:02.300 に答える