Russian Qt Forum
Ноябрь 25, 2024, 02:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: 1 [2] 3 4 ... 6   Вниз
  Печать  
Автор Тема: Диалоговое окно для ввода текста  (Прочитано 36315 раз)
Spark
Гость
« Ответ #15 : Июнь 30, 2013, 19:01 »

Спасибо за советы. Будем пробовать.
Записан
Spark
Гость
« Ответ #16 : Июль 01, 2013, 07:05 »

Спасибо за подсказки!
В общем то не сложно оказалось и справился довольно быстро.
Код
C++ (Qt)
   if (destFile.open(QIODevice::WriteOnly | QIODevice::Text))
   {
       QTextStream stream(&destFile1);
       stream.setCodec("UTF-16LE");
       bom ( stream );
 
       stream << "New" + text + "_v1.0\"\n";
       stream << "Content";
 
       stream.flush();
       destFile.close();
   }

В этом случае скорее даже целесообразно не копировать файл с ресурсов, а создавать уже с нужным именем.
Дальше уже творческий процесс Улыбающийся. Осталось снабдить диалоговое окно дополнительными полями ввода и соответственно пополнить шапку файла этой дополнительной информацией.
Подчистить код и ввести хоть какую нибудь простенькую проверку (уже существование каталога/файла с подобным именем).
« Последнее редактирование: Июль 01, 2013, 07:12 от Spark » Записан
Spark
Гость
« Ответ #17 : Июль 01, 2013, 09:39 »

Усложняется задача для меня. С mainwindow.cpp запустил диалог для ввода одной строки. В конечном итоге не сложно (когда пояснили Улыбающийся). Теперь если в диалоговом окне необходимо разместить текстовую строку, комбобокс и чекбокс, то мне придется все таки открыть новый newwindow.cpp?
Записан
Bepec
Гость
« Ответ #18 : Июль 01, 2013, 09:54 »

Улыбающийся Страшные у вас задачи Показает язык

В принципе да, нужно новое окно - делайте ещё один виджет Показает язык В принципе в одном cpp/h может быть неограниченное число классов, но по хорошему 1 класс в одном файле Веселый
Записан
Spark
Гость
« Ответ #19 : Июль 01, 2013, 10:17 »

Улыбающийся Страшные у вас задачи Показает язык

В принципе да, нужно новое окно - делайте ещё один виджет Показает язык В принципе в одном cpp/h может быть неограниченное число классов, но по хорошему 1 класс в одном файле Веселый
В принципе не настолько конечно страшно Улыбающийся, иду ведь от обратного - ковыряю чужую программу. Файлов итак много. И в целом боязно. Ни разу пока не приходилось полностью оформалять класс. Хотелось бы оттянуть этот процесс. Но наверное уже готов к этому, раз надо. Меня больше пугает не то как описать сам виджет, а неизвестность  - как подцепить виджет из mainwindow.cpp ну к той же кнопке, что я подключил предыдущее простое диалоговое окно? Не то, что бы я раньше этого не делал, просто я пользовался готовыми блоками, смотрел уже готовые связи и подгонял, постепенно осознавая, что я делаю. Теперь же все придется делать с нуля Улыбающийся. Конечно страх пройдет после первого подключенного виджета.
Тогда простой вопрос. Все, что мне сейчас надо это просто создать два файла newwindow.cpp, newwindow.h и вперед без страха Улыбающийся?
« Последнее редактирование: Июль 01, 2013, 10:19 от Spark » Записан
Bepec
Гость
« Ответ #20 : Июль 01, 2013, 10:18 »

Возможно.

PS чОрт
Цитировать
чОрный список: Spark
.
Записан
Spark
Гость
« Ответ #21 : Июль 01, 2013, 10:22 »

Bepec
Чего уж по мелочам. Проще ведь всю ветку для новичков в черный список определить.
Записан
Bepec
Гость
« Ответ #22 : Июль 01, 2013, 10:38 »

Достоин ответа вопрос, а не спрашивающий. ©

PS те, кто умеют читать и видно, что советы не пролетают мимо них, достойны уважения. И наоборот Улыбающийся
Записан
Spark
Гость
« Ответ #23 : Июль 01, 2013, 17:13 »

Ok! С новым окном разобрался. Работает.
В нем присутствует ComboBox:
Код
C++ (Qt)
    = new QComboBox();
   newComboBox->addItem("abbr1");
   newComboBox->addItem("abbr2");

Соответственно вытаскиваю строку:
Код
C++ (Qt)
   QString text = newComboBox->currentText();

Каждому итему списка соответствует расшифровка:
abbr1 - abbreviation1
abbr2 - abbreviation2

Необходимо QString text2 присвоить расшифровку.
Конечно могу сделать это через серию Ifов, но хотелось бы сделать это компактнее.
За любую помощь буду благодарен.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #24 : Июль 01, 2013, 17:16 »

Конечно могу сделать это через серию Ifов, но хотелось бы сделать это компактнее.
Широкий выбор QMap, QHash, std::map
Записан
Spark
Гость
« Ответ #25 : Июль 01, 2013, 17:19 »

Конечно могу сделать это через серию Ifов, но хотелось бы сделать это компактнее.
Широкий выбор QMap, QHash, std::map
Спасибо посмотрю. А чем бы вы воспользовались? Если в списке предполагается пунктов 200-300.
Записан
Spark
Гость
« Ответ #26 : Июль 01, 2013, 17:56 »

Так понял, что QMap не позволяет делать такое QMap<QString, QString> map?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #27 : Июль 01, 2013, 18:17 »

неправильно понял.

лучше используй хэш — тебе ведь все равно в каком порядке хранятся данные.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #28 : Июль 01, 2013, 18:26 »

неправильно понял.

лучше используй хэш — тебе ведь все равно в каком порядке хранятся данные.
Человеку нужен пример чтобы списать
Код
C++ (Qt)
typedef QMap <QString, QString> TMap;
TMap theMap;
 
// заполняем мапу
theMap["abbr1"] = "abbreviation1";
theMap["abbr2"] = "abbreviation2";
 
// находим полное имя по ключу (shortName)
QString shortName = "abbr1";
QString fullName = theMap.value(shortName, "");
 
// fullName  = "abbreviation1"
// или пустая строка если ключа нет
 
Записан
Spark
Гость
« Ответ #29 : Июль 01, 2013, 19:03 »

Человеку нужен пример чтобы списать
Вы не справедливы. Я все таки многое делаю самостоятельно и часто достаточно намека, что в правильном направлении ищу. И в общем то свой код написал, но не правильно, поэтому не публикую. Тем более, что ваш работает Улыбающийся. К тому же у нас снова глубокая ночь Улыбающийся. А вопросы потому и не заканчиваются, что много делаю, а не стою на месте. При этом параллельно ищу самостоятельно.
Я рад любой помощи, тем более развернутому ответу. Это очень ускоряет процесс обучения.
Спасибо за пример!

Свой код все таки опубликую, но наверное все переврал:

Код
C++ (Qt)
QHash<QString, QString> hash;
 
hash.insert("abbr1", "abbreviation1");
hash.insert("abbr2", "abbreviation2");
 
QString text = newComboBox->currentText();
 
QString text2 = hash[text];
Записан
Страниц: 1 [2] 3 4 ... 6   Вверх
  Печать  
 
Перейти в:  


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