crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Не могу обратится к свойствам объекта
heiheshang
  опции профиля:
сообщение 9.4.2009, 9:43
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 9.4.2009
Пользователь №: 666

Спасибо сказали: 0 раз(а)




Репутация:   0  


У объекта есть проперти.
Q_PROPERTY( QStringList DefHeaders READ getDefHeaders WRITE setDefHeaders DESIGNABLE true USER true SCRIPTABLE true)
В конструкторе объекта пытаюсь прочитать значения через getDefHeaders, показывает что нет значений, хотя в ui файле все заполнено и в дизайнере все показывается. В чем проблема ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 9:51
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(heiheshang @ 9.4.2009, 13:43) *
В чем проблема ?
приведи код конструктора, может ты до создания формы их читаешь
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
heiheshang
  опции профиля:
сообщение 9.4.2009, 12:47
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 9.4.2009
Пользователь №: 666

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не понял что значит до создания формы ? Во время создания формы создается объект, как объект нарисуется если у него свойства не определены ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 9.4.2009, 13:19
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(heiheshang @ 9.4.2009, 10:43) *
В конструкторе объекта пытаюсь прочитать значения через getDefHeaders, показывает что нет значений, хотя в ui файле все заполнено
Цитата(heiheshang @ 9.4.2009, 13:47) *
Не понял что значит до создания формы ?

Если пытаетесь читать значения getDefHeaders, до вызова setupUi(), то естественно ничего и не прочитаете.
В лубом случае ищите ошибки у себя в коде, задача элементарная. Либо, выкладывайте исходники конструктора, гетера и сетера.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
heiheshang
  опции профиля:
сообщение 9.4.2009, 13:30
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 9.4.2009
Пользователь №: 666

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ну примерно так создаю форму
QFormBuilder fb;
QWidget *form = fb.load(d);
form->show();
читаю форму из файла. В какой момент происходит заполнение свойств ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2009, 13:46
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


попробуй перед show(), вызвать:
form->setupUi();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 9.4.2009, 15:23
Сообщение #7


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Litkevich Yuriy @ 9.4.2009, 14:46) *
попробуй перед show(), вызвать:
form->setupUi();
Там динамическая закрузка из формы. Повторно делать setupUi не надо. Я предпологаю, что heiheshang просто неправильно свойство запрашивает.

2 heiheshang
Раз отказываетесь показать свой код, не знаю какие у вас там секреты, предлогаю вам простейший рабочий пример. Разбирайтесь по нему.

Раскрывающийся текст
int main(int argc, char *argv[])
{
     QApplication a(argc, argv);
    
     QFormBuilder builder;
     QFile file("../untitled.ui");
     file.open(QFile::ReadOnly);
     QWidget *myWidget = builder.load(&file);
     file.close();
    
     myWidget->show();
    
     QPushButton *button = myWidget->findChild<QPushButton *>("pushButton");
     qDebug() << button->property("flat").toBool();
    
     return a.exec();
}
Что непонятно, спрашивайте.

P.S. В данном примере, у меня на форме расположена единственная кнопка, с установленным свойством flat. Это свойство я и запрашиваю. Все работает, никаких проблем не возникает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
heiheshang
  опции профиля:
сообщение 9.4.2009, 15:37
Сообщение #8


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 9.4.2009
Пользователь №: 666

Спасибо сказали: 0 раз(а)




Репутация:   0  


Откуда возмется этот метод ?
Его генерит метакомпилятор , а я динамически создаю форму у меня ui_...h файла нет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 9.4.2009, 15:41
Сообщение #9


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


igor_bogomolov,
может вы немного не поняли вопроса.
это скорее всего динамическое свойство
Цитата
button->property("flat").toBool()


а heiheshang, пользует другой род свойство с помощью макросов
с помощью этого на сколько я понимаю можно менять свойства класса выше по иерархии
вот пример из ассистента
QPushButton *button = new QPushButton;
QObject *object = button;

button->setDown(true);
object->setProperty("down", true);


Сообщение отредактировал kwisp - 9.4.2009, 15:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
heiheshang
  опции профиля:
сообщение 9.4.2009, 15:44
Сообщение #10


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 9.4.2009
Пользователь №: 666

Спасибо сказали: 0 раз(а)




Репутация:   0  


Не отказываюсь я показывать.
В конструкторе объекта вызываю
QStringList hl = getDefHeaders();
for(int i=0; i<hl.count(); i++)
{
    printf(hl[i]);printf("\n");
}

Вот весь код. В вашем примере вы показываете форму , а потом обращаетесь к свойству, а мне надо прочитать свойства и отрисовать в самом объекте. Форма еще не показалась, я только ее генерю.
Причина редактирования: используйте тэг code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 20:32