如何设置QTextEdit的背景颜色?

3

我注意到如果在HTML中使用bgcolor="#ffd814"类型,那么在textedit中背景颜色会改变为这个颜色。我该如何在QAction和QColorDialog中获得相同的结果?

我试过这个:

void MainWindow::on_actionBackground_Color_triggered()
{    
    QColor color = QColorDialog::getColor(Qt::white,this);
    QPalette palette;
    palette.setColor(QPalette::Base,color);
    if(color.isValid())
        ui->textEdit->setPalette(palette);
}

但它不改变HTML,因此在关闭和打开文件后,背景仍然是白色。

备注:在 < body bgcolor="#ffd814" > 中使用 bgcolor="#ffd814" 不会更改textedit中的滚动条颜色。

如果我们使用 QColor::name,它将以QString格式返回颜色名称(#ffd814),我们如何将其放入HTML中。例如:

void MainWindow::on_actionText_Color_triggered()
{
    QColor color = QColorDialog::getColor(Qt::white,this);
    if(color.isValid())
        ui->textEdit->setTextColor(color);
}

这会改变所选文本的颜色并将其保存在HTML中,因此我们在TextEdit中所做的更改会被记住。


https://dev59.com/OmHVa4cB1Zd3GeqPjyWY - undefined
http://www.qtcentre.org/threads/2196-Qt4-QTextEdit-background-color - undefined
我已经看过它们了,它们不能按照需要的方式正常工作。 - undefined
1个回答

6
使用相关对象创建QPalette。
QPalette palette = ui->textEdit->pallette();

这是一个可工作的例子:

QColor color = QColorDialog::getColor(Qt::white,this); // in here your color pallete will open..

QPalette p = ui->textEdit->palette(); // define pallete for textEdit.. 
p.setColor(QPalette::Base, Qt::red); // set color "Red" for textedit base
p.setColor(QPalette::Text, color); // set text color which is selected from color pallete
ui->textEdit->setPalette(p); // change textedit palette

正确的方法签名应该是 ui->textEdit->palette() - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接