crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 15.7.2025, 9:12