QWidget / QFrame не показывает фон или границу при добавлении в макет - PullRequest
0 голосов
/ 10 апреля 2011

У меня есть производный объект QFrame:

class SubjectLineDisplay : public QFrame
{
    Q_OBJECT
private:
    // Members

public:
    explicit SubjectLineDisplay(const QString&, const QString&, quint32, QWidget *parent = 0);
};

В конструкторе я установил для него фон и границу:

QPalette p(palette());
p.setColor(QPalette::Background, QColor(255, 255, 255));
setPalette(p);
setLayout(mainLayout); // The mainLayout is a VBoxLayout which is a collection of a few QLabels
setFixedHeight(lTitle->size().height() + lId->size().height());

Когда я делаю это в main():

SubjectLineDisplay* x = new SubjectLineDisplay("NETWORK", "Network Centric Programming", 4);
x->show();

Виджет отображается в окне, фон и рамка отображаются правильно, как я хотел бы.Однако, когда я добавляю его в другой макет, чтобы показать его:

SubjectLineDisplay* lineDisplay = new SubjectLineDisplay(
            subjectNameLE->text(), idLE->text(), creditSpin->value()
);

emit newSubjectAdded(Course(subjectNameLE->text(), idLE->text(), creditSpin->value()));

subjectNameLE->clear();
creditSpin->setValue(3);
idLE->clear();

subjectLineLayout->addWidget(lineDisplay); //Adding the widget to a layout

Теперь я не вижу рамку или границу.Как получить макет для отображения рамки и границы?Что я делаю не так?

1 Ответ

2 голосов
/ 10 апреля 2011

Не могли бы вы попробовать использовать setAutoFillBackground (true)? Насколько я знаю, передний план всегда рисуется, а фоны - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...