Russian Qt Forum
Апреля 21, 2025, 20:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Динамическое создание имени переменной  (Прочитано 10076 раз)
SerjVarshavskiy
Гость
« : Ноября 04, 2007, 13:57 »

День добрый.

например в perl есть возможность получить данные переменной,
имя которой находится в другой переменной (string)

perl:
$testVar = "YES!\n";
$strVarName = "testVar";
print "$$strVarName"; # YES!

подскажите, как подобное реализовать в Qt/C++ ?
Записан
Вячеслав
Гость
« Ответ #1 : Ноября 04, 2007, 14:19 »

perl - интерпритатор, C++ компилятор - в общем случае Подмигивающий Разницу знаем ?
В самом общем случае - ответ будет -"никак" Подмигивающий Если переменные наследники QObject'a то смотрим в сторону objectName проперти Подмигивающий
Записан
ритт
Гость
« Ответ #2 : Ноября 04, 2007, 14:33 »

а поинтеры на хрена были придуманы?
Записан
SerjVarshavskiy
Гость
« Ответ #3 : Ноября 04, 2007, 14:35 »

затем, что бы на вопрос написать какой-нибудь ответ КОДОМ
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Ноября 04, 2007, 14:36 »

Можно попробывать через Dynamic Properties. Помоему так будет дёшево и сердито Подмигивающий
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
SerjVarshavskiy
Гость
« Ответ #5 : Ноября 04, 2007, 14:40 »

perl - интерпритатор, C++ компилятор - в общем случае Подмигивающий Разницу знаем ?
В самом общем случае - ответ будет -"никак" Подмигивающий Если переменные наследники QObject'a то смотрим в сторону objectName проперти Подмигивающий

о, башое пасиб, чет сразу не сообразил про эту возможность с objectName
Записан
SerjVarshavskiy
Гость
« Ответ #6 : Ноября 04, 2007, 14:49 »

Можно попробывать через Dynamic Properties. Помоему так будет дёшево и сердито Подмигивающий

если можно подробнее (если это не QObject.ObectName)
новенький я в Qt  Обеспокоенный
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #7 : Ноября 04, 2007, 14:56 »

если можно подробнее (если это не QObject.ObectName)

Это QObject::setProperty(...), QObject::property()

Цитировать
In addition to properties defined using Q_PROPERTY in a class it is possible to dynamically add and remove properties to any QObject at run-time.

If setProperty is called with a property not statically defined using Q_PROPERTY it is automatically added as dynamic property and its value is stored in the object. The value can be queried using the property() method, just like with static properties.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Вячеслав
Гость
« Ответ #8 : Ноября 04, 2007, 15:06 »

а поинтеры на хрена были придуманы?
А для динамики они не катят - если ты не знаешь че ему присваивать - имя перемменой строиться в динамике - то ой Грустный А вообще IMHO это изврат - если такое потребовалось - ищем ошибку в проектировании проги Подмигивающий
Записан
Tam-Tam
Гость
« Ответ #9 : Ноября 05, 2007, 02:34 »

Нечто похожее есть в С++. Qt тут ни при чем.
Записан
vaprele07
Гость
« Ответ #10 : Ноября 05, 2007, 04:31 »

посмотри QMap, QHash
QMap<QString, QString> tags;
tags["testVar"] = "YES!\n";
strVarName = tags["testVar"];
Записан
Tam-Tam
Гость
« Ответ #11 : Ноября 05, 2007, 13:09 »

Может поможет...
#define concat(a, b) a ## b

int xy = 1;
printf("%d", concat(x, y));

Хотя врядли - динамически так не получится.
« Последнее редактирование: Ноября 05, 2007, 13:11 от Tam-Tam » Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #12 : Ноября 06, 2007, 01:43 »

Вообще непонятно, нафига такое понадобилось?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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