Russian Qt Forum
Ноябрь 22, 2024, 18:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: изменение дочерних виджетов в конструкторе окна  (Прочитано 4188 раз)
root
Гость
« : Ноябрь 16, 2010, 10:21 »

Есть главное окно созданное в дизайнере qcreator'а, есть клас этого окна.
Агрегация через указатель. В зависимости от некоторых условий, в главном
окне необходимо скрывать/показывать некоторые виджеты и менять текст лейблов.
Делать надо это до того как окно отобразиться на экране.
Прописываю эти действия в конструкторе класса главного окна. Так вот, скрывать
виджеты получается, а вот менять текст у лэйблов, или других элементов (к пр. элементы списка)
не получается. Т.е. что в дизайнере заданно, то в итоге и отображается. Подскажите как исправить этот трабл.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Ноябрь 16, 2010, 10:24 »

покажи как меняешь
Записан

Юра.
root
Гость
« Ответ #2 : Ноябрь 16, 2010, 16:21 »

Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->label_20->setText(tr("текст"));
    .......
}

Конкретизирую ситуацию. На главном окне лежит стэк виджетов, в стэке несколько страниц,
так вот на этих страницах и надо менять текст и т.д. в зависимости от роли пользователя.
В вызываемых из главного окна диалогах, при задании в конструкторе подобных действий - все работает.
в главном же окне нет....
« Последнее редактирование: Ноябрь 17, 2010, 01:47 от root » Записан
root
Гость
« Ответ #3 : Ноябрь 17, 2010, 14:44 »

что никто не встречал такой ситуации? Я уже мозг сломал, не могу понять в чем проблема.
Создаю новый проект с похожим набором виджетов, все работает прекрасно.
А в моем конкретном проекте - нет.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Ноябрь 17, 2010, 16:39 »

я не сталкивался. Попробуй полностью очистить проект
make distclean
а затем заново
qmake
make
Записан

Юра.
root
Гость
« Ответ #5 : Ноябрь 18, 2010, 02:33 »

сделал это с самого начала к сожалению не помогло....  Плачущий
переносил чистый проект на другую машину, та же история...
« Последнее редактирование: Ноябрь 18, 2010, 02:36 от root » Записан
root
Гость
« Ответ #6 : Январь 27, 2011, 05:04 »

Спустя много времени случайно понял как решить проблему. В прошлый раз решил костылем.
Опишу здесь решение, если вдруг у кто-то столкнется с такой же ситуацией.

Для примера возьму контрол QLabel
Что имеем: QLabel находящийся на форме проектируемой в дизайнере. Надо динамически, в конструкторе формы, менять текст отображающийся в лэйбле. Если на форму просто кинуть лэйбл и потом в коде задавать ему тот или иной текст, то все будет нормально.
Но если же вы в дезайнере задали для лэйбла текст, а потом в конструкторе пытаетесь его изменить, то ничего не выйдет. Для того что бы текст можно было изменить динамически (в конструкторе окна) лэйбл должен быть чист. И не просто чист, а "дефолтно" чист. Это значит что не достаточно в нем просто удалить текст. Надо выбрать наш лэйбл в дизайнере и в окне свойств элемента вернуть свойство text в дефолтное состояние, нажав в правом углу на стрелочку.
Записан
Fat-Zer
Гость
« Ответ #7 : Январь 27, 2011, 05:17 »

ни разу такого не наблюдал... а можно пример в котором такой баг возникает? и возможно стоит офорить багрепорт?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.