crossplatform.ru

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


  Ответ в Как преобразовать перечисляемый тип в QString ?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Qt =( Дата 13.3.2009, 15:14
 
Цитата(SABROG @ 12.3.2009, 12:22) *
Цитата(Qt =( @ 11.3.2009, 19:57) *
2 SABROG
а если enum Language {ASM, C, CPP, PASCAL, FORTRAN, BASIC, JAVA} описан не в классе? то как тогда?

Поместить в класс. Рефакторинг.

Благодарю именно так и поступил =)
SABROG Дата 12.3.2009, 12:22
 
Цитата(Qt =( @ 11.3.2009, 19:57) *
2 SABROG
а если enum Language {ASM, C, CPP, PASCAL, FORTRAN, BASIC, JAVA} описан не в классе? то как тогда?

Поместить в класс. Рефакторинг.
Qt =( Дата 11.3.2009, 19:57
  2 SABROG
а если enum Language {ASM, C, CPP, PASCAL, FORTRAN, BASIC, JAVA} описан не в классе? то как тогда?
SABROG Дата 8.3.2009, 13:18
  Согласен. Но код по сути - сырец. Можно его причесать так, чтобы было все чин-чинарем, с перегрузкой операторов и прочее.
Кроме того у этого кода есть преимущества над препроцессорными средствами. И к тому же он избавляет человека от двойного объявления членов списка. Раньше я обычно это решал таким образом:

//псевдокод
enum states {state1, state2};
const char *astates[] = {"state1", "state2"};
printf(astates[state1]);
kwisp Дата 8.3.2009, 12:05
  SABROG,
спасибо я к примеру этого не знал.
однако,по моему, все все равно сводится к созданию массива(мли мэпа) и функции доступа к строкам(если пользоваться этим напрямую то можно использовать не только в программах на Qt).

если честно, громоздко выглядит. чтобы получить строку необходимо объект создать все же это вызов конструктора.
и вот эта строка еще.
int index = mo.indexOfEnumerator("Language");
доступ к индексу по строке.
SABROG Дата 8.3.2009, 11:46
  Предлагаю не ждать стандартов, а воспользоваться мета-объектными средствами Qt.

#include <QtCore/QtGlobal>
#include <QtCore/QtDebug>
#include <QtCore/QMetaObject>
#include <QtCore/QMetaEnum>

class Programmer : public QObject
{
    Q_OBJECT
public:
    enum Language {ASM, C, CPP, PASCAL, FORTRAN, BASIC, JAVA};
    Q_ENUMS(Language)
};

int main(int argc, char *argv[])
{
    const QMetaObject &mo = Programmer::staticMetaObject;
    int index = mo.indexOfEnumerator("Language");
    QMetaEnum me = mo.enumerator(index);
    Programmer::Language p = Programmer::CPP;
    Programmer::Language l= static_cast<Programmer::Language>(me.keyToValue("CPP"));
    qDebug() << me.valueToKey(p) << ":" << l;
    return 0;
}

#include "main.moc"


CPP : 2


Не забудьте прописать CONFIG += console в .pro файле.
kwisp Дата 8.3.2009, 2:24
  Qt =(,
почему никак? сам пиши функцию а вообще на форуме уже есть тема на этот счет.
я пользую так называемый X solution.
короче

ЗЫ.
может новый стандарт нам что нить интересное подкинет.
Qt =( Дата 8.3.2009, 0:11
 
Цитата(BRE @ 7.3.2009, 23:49) *
Цитата(Qt =( @ 7.3.2009, 23:45) *
Чтобы не плодить неинтересные темы напишу в этой.
Как преобразовать перечисляемый тип
typedef enum ..... {
......,
......,
......,
} .......;
в QString ???

Ты хочешь получить имена из перечисления? Тогда никак.

да ладно...в делфях и то есть фукция GetEnumName.
BRE Дата 7.3.2009, 23:49
 
Цитата(Qt =( @ 7.3.2009, 23:45) *
Чтобы не плодить неинтересные темы напишу в этой.
Как преобразовать перечисляемый тип
typedef enum ..... {
......,
......,
......,
} .......;
в QString ???

Ты хочешь получить имена из перечисления? Тогда никак.
Qt =( Дата 7.3.2009, 23:45
  Чтобы не плодить неинтересные темы напишу в этой.
Как преобразовать перечисляемый тип
typedef enum ..... {
......,
......,
......,
} .......;
в QString ???
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 20:01