Секреты и интересные возможности Qt |
Здравствуйте, гость ( Вход | Регистрация )
Секреты и интересные возможности Qt |
void* |
23.7.2008, 22:28
Сообщение
#1
|
Программист-самоучка Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: 3 |
Предлагаю в данную тему скидывать все известные вам интересные фичи и "секреты" Qt. Думаю, так можно собрать неплохую коллекцию интересных возможностей Qt, где каждый сможет найти что-нибудь интересное для себя или узнать новое. Начну сам:
1) Макрос Q_UNUSED позволяет избежать предупреждений по поводу неиспользования какой-то переменной. Пример:
2) Функция QString Qt::escape(const QString &plain) позволяет конвертировать в строке, задаваемую параметром plain метасимволы HTML (<, >, &) в их HTML-эквиваленты. Пример:
3) Макрос Q_PROPERTY позволяет в некоторых случаях избежать приведения. Пример:
to be continued... P.S. Надеюсь тема не умрет, и каждый будет ее поддерживать своими находками ----------------------- Ссылки на интересные возможности: 1) QComboBox-Изменение размера выпадающего списка 2) qmake, как обратится к текущему каталогу? Сообщение отредактировал Litkevich Yuriy - 31.1.2009, 12:52 |
|
|
AD |
24.7.2008, 9:29
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
P.S. Мне кажется тему можно вверху прикрепить!
Не знаю, возможно, это и известный факт, но мне показалось не совсем обычным такое применение функции read/write. При этом применении она становится аналогом функций Windows Api ::ReadFile/::WriteFile:
В данном коде, тип _str - это пользовательский тип. В функциях read/write считываются в эту структуру данные указанного типа при преобразовании в const char*, а не в void*! |
|
|
Tonal |
24.7.2008, 10:16
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Не знаю, возможно, это и известный факт, но мне показалось не совсем обычным такое применение функции read/write. При этом применении она становится аналогом функций Windows Api ::ReadFile/::WriteFile: Оно вполне обычное - сохранение буфера. Но мне кажется, код у тебя не правильный. Если сохранение/восстановление происходят в разных программах, или даже при разных запусках одной программы, в поле strOut.s с большой вероятностью будет мусор. Сообщение отредактировал Tonal - 24.7.2008, 10:17 |
|
|
AD |
24.7.2008, 10:33
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Оно вполне обычное - сохранение буфера. Но мне кажется, код у тебя не правильный. Если сохранение/восстановление происходят в разных программах, или даже при разных запусках одной программы, в поле strOut.s с большой вероятностью будет мусор. не совсем понял почему неправильный. Но он исправно работает. Проверял на нескольких машинах! |
|
|
Tonal |
24.7.2008, 11:48
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
...в поле strOut.s с большой вероятностью будет мусор. не совсем понял почему неправильный. Но он исправно работает. Проверял на нескольких машинах! 1) Как объявлено поле _str.s? Как char* ? 2) На что указывает поле strIn.s перед сохранением (где живёт массив символов)? 3) Как ты думаешь, что именно сохраняется в файле на месте соответствующем полю _str.s? 4) Что будет находится в поле strOut.s после чтения? 5) Куда будет указывать поле strOut.s в другой программе? Или в этой же, если выполнится например вот такой код:
P.S. В своём первом посте, ты strOut и strIn местами не перепутал? P.P.S Если я ошибся в первом предположении, и поле _str.s имеет тип строки (QString, или std::string, или ещё какой), задумайся, как он устроен, и где хранятся те символы, которые представляют строку. Сообщение отредактировал Tonal - 24.7.2008, 11:50 |
|
|
Текстовая версия | Сейчас: 22.11.2024, 23:44 |