crossplatform.ru

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


  Ответ в Написание чата
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 27.12.2009, 20:37
 
Цитата(breeve @ 27.12.2009, 22:44) *
ак вот а tr() не хочет принимать QString на параметр.. пишет ошибку
а зачем ему принимать QString, он тебе QString'ов делает, их и используй.

Цитата(breeve @ 27.12.2009, 22:44) *
Вставил он работает.. только мне нужно чтобы не комбинацию считывал, а одну кнопку.. я пытался убрать альт и оставить только ентер вот так: (Qt::Key_Return)
посмотри тему: перемещение курсора в QTextEdit, там есть обработка события нажатия клавиши "Enter". Если будет не достаточно создай новую, уточняющую тему, или наоборот более общую.
breeve Дата 27.12.2009, 19:44
 
Цитата(Litkevich Yuriy @ 27.12.2009, 19:15) *
просто константа "Привет" будет превращена в QString, с его внутренним представлением, из кодировки которую ты указваешь глобально в main'е.

А дальше при сравнении двух QString, сравниваться уже будут строки в одной и тоже внутренней кодировке Qt (UTF-16)


Да это конечно все хорошо.. все понятно, все работает..
Я на самом деле думал что будет не одна строка "Привет" а допустим массив QString где много разных привет и допустим если введенное слово совпадает со словом из одного массива то пишет одно, из другого другое.. Так вот а tr() не хочет принимать QString на параметр.. пишет ошибку

А насчет Ентера нашел тут вот тему прошлогоднюю и там был код я его малец переделал:
   qatmp = new QAction(this);
    qatmp->setShortcut(QKeySequence(Qt::ALT + Qt::Key_Return));
    connect(qatmp,SIGNAL(triggered()), this,SLOT(mySlot()));
    addAction(qatmp);

Вставил он работает.. только мне нужно чтобы не комбинацию считывал, а одну кнопку.. я пытался убрать альт и оставить только ентер вот так: (Qt::Key_Return)
он у меня так не работает.. Искал в документацию как забиндить одну кнопку что-то так и не нашел(
Litkevich Yuriy Дата 27.12.2009, 19:15
  просто константа "Привет" будет превращена в QString, с его внутренним представлением, из кодировки которую ты указваешь глобально в main'е.

А дальше при сравнении двух QString, сравниваться уже будут строки в одной и тоже внутренней кодировке Qt (UTF-16)
breeve Дата 27.12.2009, 18:38
 
Цитата(Litkevich Yuriy @ 27.12.2009, 18:14) *
Цитата(breeve @ 27.12.2009, 21:09) *
Как мне переделать строку под определенную кодировку ?
надо строковые константы перевести в QString, в функции main:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()
вместо UTF-8 укажи кодировку, в которой сам исходник пишется.

Далее в коде оборачивай строковые константы в функцию tr:
tr("Привет")



вот эта функция tr() она принимает на значение const char*, так? а мне же надо перевести QString в другую кодировку.. А ты мне пишешь "Надо строковые константы перевести в QString".. помоему как раз таки наоборот.. QString в const char..



Я видимо не так понял)) Подставил tr под "привет" и все заработало)) Спасибо
Litkevich Yuriy Дата 27.12.2009, 18:14
 
Цитата(breeve @ 27.12.2009, 21:09) *
Как мне переделать строку под определенную кодировку ?
надо строковые константы перевести в QString, в функции main:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr()
вместо UTF-8 укажи кодировку, в которой сам исходник пишется.

Далее в коде оборачивай строковые константы в функцию tr:
tr("Привет")
breeve Дата 27.12.2009, 18:14
  Я даже понял в чем проблема, только не знаю как решить ее
Когда я ввожу с клавиатуры.. там видимо кодировка другая и поэтому он не определяет.. с цифрами и с латинским алфавитом работает а вот с русским(((
Как мне переделать строку под определенную кодировку ?

не успеваю задать вопрос уже ответ написали))
BRE Дата 27.12.2009, 18:08
 
Цитата(breeve @ 27.12.2009, 18:02) *
вот нашел функцию QString::contains()
и она мне всегда говорит 0.
if(str.contains("Привет")==1)

Все правильно, почитай в assistant про то, как в Qt хранятся строки, про QTextCodec и локализацию. С этим нужно разобраться сразу и тогда масса вопросов отпадет сама собой. :)
breeve Дата 27.12.2009, 18:02
  вот нашел функцию QString::contains()
и она мне всегда говорит 0.
Не понимаю вот код:
    int count = 0;
    QString str = ptxt2->toPlainText();
    if(str.contains("Привет")==1)
        count = 1;
    qDebug() << count;
    if(count == 1)
    {
        ptxt1->insertPlainText("Bot: H1\n");
        count = 0;
    }
BRE Дата 27.12.2009, 17:47
 
Цитата(breeve @ 27.12.2009, 17:43) *
У меня назрел еще вопрос можно ли использовать стандартные директивы сишные.. например string.. или обязательно надо использовать их Qt'ешные аналоги?
Вот мне необходимо использовать функцию вхождения строки А в строку Б.. В стандартной директиве я знаю какую функцию мне использовать.. А здесь нет..

Почитай про класс QString. Там функционала с избытком. ;)
breeve Дата 27.12.2009, 17:43
  У меня назрел еще вопрос можно ли использовать стандартные директивы сишные.. например string.. или обязательно надо использовать их Qt'ешные аналоги?
Вот мне необходимо использовать функцию вхождения строки А в строку Б.. В стандартной директиве я знаю какую функцию мне использовать.. А здесь нет..
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 18:35