【发布时间】:2016-05-26 13:48:25
【问题描述】:
我有一个QGraphicsScene 并添加了一个QlineEdit,但更改颜色不起作用。
QGridLayout *layout = new QGridLayout(this);
QGraphicsView *view = new QGraphicsView(this);
QGraphicsScene *scene = new QGraphicsScene(this);
QWidget *widget = new QWidget();
QGridLayout *widgetLayout = new QGridLayout(this);
QLineEdit *le1 = new QLineEdit(widget);
QLineEdit *le2 = new QLineEdit(widget);
widgetLayout->addWidget(le1,1,0);
widgetLayout->addWidget(le2,2,0);
widget->setLayout(widgetLayout);
QPalette paletteRed = le1->palette();
paletteRed.setColor(QPalette::Background,Qt::red);
QPalette paletteGreen = le1->palette();
paletteGreen.setColor(QPalette::Background,Qt::green);
le1->setAutoFillBackground(true);
le1->setPalette(paletteRed); // not working
widget->setPalette(paletteGreen); // working
view->setScene(scene);
scene->addWidget(widget);
ui->centralWidget->setLayout(layout);
layout->addWidget(view);
如果小部件在场景中,我是否必须触发 update() 之类的东西(也无法获得另一种颜色)?
编辑:
创建了新的示例代码。
我知道这适用于普通的QWidget。实际上,如果我将QLineEdit 放在普通的QFrameetc 但它在QGraphicsScene 中,则代码可以正常工作。在这种特殊情况下,它不起作用。文本和突出显示颜色等也可以正常工作。但背景/基础/等不是。
【问题讨论】:
-
变色码在哪里?
-
改变
QPallette? -
尝试使用qt样式表
-
它不像我不能改变任何东西,我可以改变
Text颜色但我不能改变`background'或'base' -
问题解决了吗?在 textedit 中放置 lineedit 时我遇到了同样的问题
标签: c++ qt qgraphicsscene qlineedit