Название: изменение дочерних виджетов в конструкторе окна Отправлено: root от Ноябрь 16, 2010, 10:21 Есть главное окно созданное в дизайнере qcreator'а, есть клас этого окна.
Агрегация через указатель. В зависимости от некоторых условий, в главном окне необходимо скрывать/показывать некоторые виджеты и менять текст лейблов. Делать надо это до того как окно отобразиться на экране. Прописываю эти действия в конструкторе класса главного окна. Так вот, скрывать виджеты получается, а вот менять текст у лэйблов, или других элементов (к пр. элементы списка) не получается. Т.е. что в дизайнере заданно, то в итоге и отображается. Подскажите как исправить этот трабл. Название: Re: изменение дочерних виджетов в конструкторе окна Отправлено: lit-uriy от Ноябрь 16, 2010, 10:24 покажи как меняешь
Название: Re: изменение дочерних виджетов в конструкторе окна Отправлено: root от Ноябрь 16, 2010, 16:21 Код: MainWindow::MainWindow(QWidget *parent) : Конкретизирую ситуацию. На главном окне лежит стэк виджетов, в стэке несколько страниц, так вот на этих страницах и надо менять текст и т.д. в зависимости от роли пользователя. В вызываемых из главного окна диалогах, при задании в конструкторе подобных действий - все работает. в главном же окне нет.... Название: Re: изменение дочерних виджетов в конструкторе окна Отправлено: root от Ноябрь 17, 2010, 14:44 что никто не встречал такой ситуации? Я уже мозг сломал, не могу понять в чем проблема.
Создаю новый проект с похожим набором виджетов, все работает прекрасно. А в моем конкретном проекте - нет. Название: Re: изменение дочерних виджетов в конструкторе окна Отправлено: lit-uriy от Ноябрь 17, 2010, 16:39 я не сталкивался. Попробуй полностью очистить проект
make distclean а затем заново qmake make Название: Re: изменение дочерних виджетов в конструкторе окна Отправлено: root от Ноябрь 18, 2010, 02:33 сделал это с самого начала к сожалению не помогло.... :'(
переносил чистый проект на другую машину, та же история... Название: Re: изменение дочерних виджетов в конструкторе окна Отправлено: root от Январь 27, 2011, 05:04 Спустя много времени случайно понял как решить проблему. В прошлый раз решил костылем.
Опишу здесь решение, если вдруг у кто-то столкнется с такой же ситуацией. Для примера возьму контрол QLabel Что имеем: QLabel находящийся на форме проектируемой в дизайнере. Надо динамически, в конструкторе формы, менять текст отображающийся в лэйбле. Если на форму просто кинуть лэйбл и потом в коде задавать ему тот или иной текст, то все будет нормально. Но если же вы в дезайнере задали для лэйбла текст, а потом в конструкторе пытаетесь его изменить, то ничего не выйдет. Для того что бы текст можно было изменить динамически (в конструкторе окна) лэйбл должен быть чист. И не просто чист, а "дефолтно" чист. Это значит что не достаточно в нем просто удалить текст. Надо выбрать наш лэйбл в дизайнере и в окне свойств элемента вернуть свойство text в дефолтное состояние, нажав в правом углу на стрелочку. Название: Re: изменение дочерних виджетов в конструкторе окна Отправлено: Fat-Zer от Январь 27, 2011, 05:17 ни разу такого не наблюдал... а можно пример в котором такой баг возникает? и возможно стоит офорить багрепорт?
|