Название: Родитель-ребенок [SOLVED] Отправлено: tillias от Февраль 03, 2007, 19:20 Здравствуйте!
Создаю тестовую иерархию: Код: class Ramka : public QLabel { Далее панель, на которой хочу отобразить много таких рамок: Код: class MnogoRamok : public QWidget { Конструктор главного виджета MnogoRamok по очереди создает *test и *test2. MnogoRamok::MnogoRamok( QWidget *parent, const char *name ) : QWidget( parent ) { test = new Ramka(this); test.setPalette( QPalette(QColor("red"))); test2 = new Ramka2(this); ... } Проблема в том, что хоть рамки и создаюься, но визуально не отображаются... В чем может быть проблема? добавлено спустя 5 минут: Если модифицировать конструктор ( убрать родителя ): Код:
То все работает. НО, так как родителем является app, то главный виджет выводится отдельным окном, а тестовые лабелы test и test2 тоже отдельными окнами. Мне же хочется, чтобы выводился главный виджет, а уже на нем создавались лабелы. Все в одном окне добавлено спустя 1 минуту: Подскажите пожалуйста, где проблема? Название: Родитель-ребенок [SOLVED] Отправлено: Steven_Orko от Февраль 03, 2007, 19:33 Цитата: "tillias" Подскажите пожалуйста, где проблема? Скорее проблемма в том, что ты их не размещаешь с помощью менеджеров компоновки. а если и размещаешь, то наверно, не заполняешь. Они и принимают такой размер, что ты их не видишь. Конечно, если других "косяков" в коде нет )))) Название: Родитель-ребенок [SOLVED] Отправлено: nova от Февраль 03, 2007, 19:37 Добавь:
Код:
и наступит счастье :) Название: Родитель-ребенок [SOLVED] Отправлено: kitov от Февраль 03, 2007, 19:43 Цитата: "nova" Добавь: Код:
и наступит счастье :) При создании "Ramka" не надо указывать родителя(в этом случае) ибо им становится layout manager после addwidget . Название: Родитель-ребенок [SOLVED] Отправлено: Dendy от Февраль 03, 2007, 20:07 Сейчас угадаю. В конструкторе Ramka родитель не передаётся в QLabel.
Код: Ramka::Ramka( QWidget * parent ) Надо: Код: Ramka::Ramka( QWidget * parent ) : Второй возможньІй косяк. Если окно бьІло показано ДО создания дочерних елементов на нём - последние будут скрьІтьІ. И им надо руками делать show(). Название: Родитель-ребенок [SOLVED] Отправлено: tillias от Февраль 03, 2007, 22:03 Приведу итоговый рузультат:
( Вообще ничего не создается :( Код: class MWidget : И реализация: Код: MWidget::MWidget( QWidget *parent, const char *name ) Вызов: Код: int main( int argc, char *argv[] ) добавлено спустя 1 минуту: В итоге не видна ни одна панель, цвет не меняется :( Название: Родитель-ребенок [SOLVED] Отправлено: Вячеслав от Февраль 03, 2007, 22:13 Чей-то мне кажеться , что с приведенным кодом и не должно быть ничего видно ;)
QLabel'ам текст-то хто выдавать будет ? или QLabel(tr("label1")) или test->setText(tr("label2") Название: Родитель-ребенок [SOLVED] Отправлено: tillias от Февраль 03, 2007, 22:57 Цитировать QLabel'ам текст-то хто выдавать будет ? Спасибо! Осталось только разобраться почему виджеты не меняют цвет при помощи Код:
, однако если они не в Layout контейнере, то с цветом все в поряде. добавлено спустя 5 минут: Цвет однако меняется для родительского компонента MWidget ( который содержит лабелы test и test2 ). Поодиночке же нет: Код:
Название: Родитель-ребенок [SOLVED] Отправлено: nova от Февраль 04, 2007, 11:36 Может потому что:
Цитировать Note: The palette's background color will only have an effect on the appearance of the widget if the autoFillBackground property is set. Название: Родитель-ребенок [SOLVED] Отправлено: tillias от Февраль 04, 2007, 11:53 Цитата: "nova" Может потому что: Цитировать Note: The palette's background color will only have an effect on the appearance of the widget if the autoFillBackground property is set. Спасибо! Тема закрыта |