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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT Creator 3.5.1: вторая порция вопросов.  (Прочитано 3471 раз)
Сергей85
Гость
« : Апрель 05, 2017, 19:29 »

1. Записываю стандартные стринги как "std::string". В коде встречается много раз, поэтому хотелось бы избавиться от "std::" - какие есть решения?
2. Говорят, что можно между компьютерами переносить профиль QT, чтобы не настраивать все ее настройки на новой системе - как это сделать?
3. Как в объект класса QMessageBox назначить, с каким значком и кнопками будет выводиться сообщение? SetIcon не помогает;
4. Как в функции объявить именно необязательный входной параметр и обязательно ли необязательным параметрам быть всегда после всех обязательных параметров?
Записан
TheGringerEye
Гость
« Ответ #1 : Апрель 05, 2017, 20:48 »

1. using namespace std;
2. Win + R - %APPDATA%\QtProject
3.
Код:
QMessageBox::warning(this, tr("My Application"),
                                 tr("The document has been modified.\n"
                                    "Do you want to save your changes?"),
                                 QMessageBox::Save | QMessageBox::Discard
                                 | QMessageBox::Cancel,
                                 QMessageBox::Save);
Код из документации, статический метод warning подразумевает, что будет использована иконочка предупреждения.
4. Аргумент не обязательным становится после присвоения ему дефолтного значения, все аргументы с установленным стандартным значением должны следовать после обычных аргументов, т.к. первые можно опустить, опускание же вторых вызовет ошибку компиляции.
Записан
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #2 : Апрель 05, 2017, 20:54 »

1. Записываю стандартные стринги как "std::string". В коде встречается много раз, поэтому хотелось бы избавиться от "std::" - какие есть решения?

В месте использования (прямо в методе или в cpp) можно объявить

Код
C++ (Qt)
using namespace std;
 

или

Код
C++ (Qt)
using std::string;
 

Не стоит делать такое объявление в h, так как это может затронуть не только Ваш код.

Также можно объявить

Код
C++ (Qt)
using mytype = std::string;
 

или на старый лад

Код
C++ (Qt)
typedef std::string mytype;
 
« Последнее редактирование: Апрель 06, 2017, 09:58 от ssoft » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Апрель 05, 2017, 21:11 »

Пиши std::string, хоть понятно будет при чтении, что это стринг из std, а не что-то самопальное.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Сергей85
Гость
« Ответ #4 : Апрель 06, 2017, 19:34 »

1. using namespace std;
2. Win + R - %APPDATA%\QtProject
3.
Код:
QMessageBox::warning(this, tr("My Application"),
                                 tr("The document has been modified.\n"
                                    "Do you want to save your changes?"),
                                 QMessageBox::Save | QMessageBox::Discard
                                 | QMessageBox::Cancel,
                                 QMessageBox::Save);
Код из документации, статический метод warning подразумевает, что будет использована иконочка предупреждения.
4. Аргумент не обязательным становится после присвоения ему дефолтного значения, все аргументы с установленным стандартным значением должны следовать после обычных аргументов, т.к. первые можно опустить, опускание же вторых вызовет ошибку компиляции.

По справке есть QMessageBox::Critical (или QCritical, забыл) - соответствует инту 4. Если я впишу в .setIcon Critical - код работает, но если 4 - не работает. Как преобразовать инт в соответствующее ему слово в QMessageBox::?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #5 : Апрель 06, 2017, 21:51 »

зачем туда совать инт? а преобразование выполняется с помощью static_cast().

у тебя вопросы больше по основам С++, за что и следовало бы взяться.
Записан

Изучением 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
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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