crossplatform.ru

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

> Секреты и интересные возможности Qt
void*
  опции профиля:
сообщение 23.7.2008, 22:28
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


Предлагаю в данную тему скидывать все известные вам интересные фичи и "секреты" Qt. Думаю, так можно собрать неплохую коллекцию интересных возможностей Qt, где каждый сможет найти что-нибудь интересное для себя или узнать новое. Начну сам:
1) Макрос Q_UNUSED позволяет избежать предупреждений по поводу неиспользования какой-то переменной. Пример:
void someFunc(int var) {
     Q_UNUSED(var); //тут мы избавлемся от возможного предупреждения от компилятора
}

2) Функция QString Qt::escape(const QString &plain) позволяет конвертировать в строке, задаваемую параметром plain метасимволы HTML (<, >, &) в их HTML-эквиваленты. Пример:
QString plain = "#include <QtCore>"
QString html = Qt::escape(plain);  // html == #include <QtCore>

3) Макрос Q_PROPERTY позволяет в некоторых случаях избежать приведения. Пример:
class SomeClass : public QObject {
     Q_OBJECT
     Q_PROPERTY(bool prop READ prop WRITE setProp);
private:
     bool var;
public:
     SomeClass() : var(true) { }
     bool prop() const { return var; }
     void setProp(bool newValue) { var = newValue; }
};
//а теперь, имея указатель на QObject, мы можем изменять значения переменных унаследованного класса:
SomeClass *sc = new SomeClass;
QObject *obj = sc;
obj->setProperty("prop", true); //тоже самое, что и sc->setProp(true);


to be continued...

P.S. Надеюсь тема не умрет, и каждый будет ее поддерживать своими находками :)

-----------------------
Ссылки на интересные возможности:
1) QComboBox-Изменение размера выпадающего списка
2) qmake, как обратится к текущему каталогу?

Сообщение отредактировал Litkevich Yuriy - 31.1.2009, 12:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 8.5.2009, 21:50
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Думаю никто не будет против, если я буду использовать эту тему немного не по назначению? А именно как закладки, в каком-то смысле, чтобы не потерять.
_________

В документации по сигналам и слотам есть такая фраза:

Цитата
If several slots are connected to one signal, the slots will be executed one after the other, in an arbitrary order, when the signal is emitted.


Которая дает нам понять, что один сигнал подключенный к нескольким слотам не дает гарантии того, что эти слоты будут вызываться в порадке подключения сигналов. А именно в произвольном порядке.

Изучив немного посты в mailist'e trolltech я вынесл для себя следующую мысль. На данный момент порядок вызовов слотов можно предсказать, однако разработчики не дают гарантии того, что в новых версиях библиотеки порядок вызовов не изменится. Может быть вариант, когда вызовы будут сортироваться для достижения максимальной производительности. Поэтому, если нужен строгий порядок вызовов слотов по одному сигналу можно воспользоваться этим каркасом:

class X : public QObject
{
  Q_OBJECT
  ....  
signals:
       void fooPriority1();
       void fooPriority2();
       void fooPriority3();
       void fooPriority4();
slots:
       void emitFoo();
...
};
void X::emitFoo()
{
     emit fooPriority1();
     emit fooPriority2();
     emit fooPriority3();
     emit fooPriority4();
}

_________
А это уже на память мне, если захочу вспомнить как надо инициализировать seed перед использованием qrand:

qsrand(QDateTime::currentDateTime().toTime_t());


Сообщение отредактировал SABROG - 9.5.2009, 10:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- void*   Секреты и интересные возможности Qt   23.7.2008, 22:28
- - AD   P.S. Мне кажется тему можно вверху прикрепить...   24.7.2008, 9:29
|- - Tonal   Цитата(AD @ 24.7.2008, 13:29) Не знаю, во...   24.7.2008, 10:16
|- - AD   Цитата(Tonal @ 24.7.2008, 11:16) Оно впол...   24.7.2008, 10:33
|- - Tonal   Цитата(AD @ 24.7.2008, 14:33) Цитата(Tona...   24.7.2008, 11:48
- - Litkevich Yuriy   void*, для 1-го пункта часто имя переменной комент...   24.7.2008, 9:36
- - void*   LitkevichВ Yuriy, приколупался лучше бы продолжил...   24.7.2008, 10:09
- - ЙаМайскЫйПчОЛ   Цитата(AD @ 24.7.2008, 10:29) Не знаю, во...   24.7.2008, 11:12
- - void*   Собственно продолжение. Простенький пример того, ч...   25.7.2008, 23:26
- - Петров Виталий   Тоже поделюсь парой интересных моментов. 1) Если ...   18.9.2008, 8:31
- - void*   также можно регулировать прозрачность любого окошк...   23.9.2008, 20:11
- - Litkevich Yuriy   Цитата(kwisp @ 26.11.2008, 20:58) ... изв...   1.12.2008, 18:59
- - SABROG   Использовать QLatin1String вместо QString где это ...   8.12.2008, 16:05
- - molchanoviv   Только прирост этот будет незаметен. Так зачем это...   8.12.2008, 16:11
|- - SABROG   Цитата(molchanoviv @ 8.12.2008, 16:11) То...   8.12.2008, 16:17
- - SABROG   К теме о сигналах. Бывают случаи, когда надо испус...   8.12.2008, 16:44
- - SABROG   В Qt есть возможность использовать системные иконк...   8.12.2008, 18:01
- - SABROG   В Qt можно соединять не только сигнал со слотом, н...   9.12.2008, 14:31
- - Admin   Треп перенесен в тему Треп из темы Секреты и инте...   9.12.2008, 15:59
- - Litkevich Yuriy   обнаружил интересное поведение в QTableView если в...   5.2.2009, 19:45
|- - Yuriy   [quote name='Litkevich Yuriy' date='5....   20.12.2010, 14:57
- - SABROG   Не знаю куда это отнести к секретам или интересным...   9.2.2009, 20:43
- - Константин   ну и секреты у вас но всё-равно внесу свои пять к...   11.2.2009, 6:15
- - Admin   Перенес обсуждение не относящееся к данной теме в ...   11.2.2009, 16:35
- - SABROG   Еще один способ вывода отладочных сообщений для GU...   27.2.2009, 10:08
|- - BRE   Цитата(SABROG @ 27.2.2009, 10:08) Еще оди...   13.3.2009, 13:09
- - CrackedMind   Вообще этого будет более чем достаточно ЦитатаQErr...   13.3.2009, 12:59
- - SABROG   Добавлю метод альтернативный методу QTimer::single...   13.3.2009, 14:49
|- - PUMA   Цитата(SABROG @ 13.3.2009, 14:49) Добавлю...   30.4.2015, 1:30
- - SABROG   Пожалуй вопрос с enum'ом сюда помещу. В общем ...   13.3.2009, 20:18
- - Litkevich Yuriy   Интересная особенность Qt Designer'а   16.3.2009, 12:12
- - SABROG   Немножко заморочился на тему создания и извлечения...   20.3.2009, 15:02
|- - AD   SABROG, напиши, пожалуйста, тут о тех двух функция...   20.3.2009, 15:12
|- - SABROG   Цитата(AD @ 20.3.2009, 15:12) SABROG, нап...   20.3.2009, 15:15
|- - AD   Да нет! Я про аналоги getenv!!!...   20.3.2009, 16:40
- - SABROG   В Qt есть недокументированные кроссплатформменные ...   20.3.2009, 17:11
- - Litkevich Yuriy   Цитата(SABROG @ 20.3.2009, 20:11) В Qt ес...   20.3.2009, 17:43
- - SABROG   Для тех кто помешан на обезжиривании Qt. Вместе ...   20.3.2009, 22:06
- - Litkevich Yuriy   любопытно   20.3.2009, 22:21
|- - SABROG   Цитата(Litkevich Yuriy @ 20.3.2009, 22:21...   22.3.2009, 16:28
- - ViGOur   Тянет на статью в wiki.   22.3.2009, 17:18
- - Litkevich Yuriy   Цитата(ViGOur @ 22.3.2009, 20:18) Тянет н...   22.3.2009, 17:24
- - CrackedMind   Лишь одно скажу. Если конфигурировать сразу так бе...   23.3.2009, 9:25
- - Litkevich Yuriy   Эх, как бы всё это разгрести. Я уже несколько раз ...   2.4.2009, 18:30
- - Litkevich Yuriy   Ковырялся с документацией Qt 4.6 и сделал для себя...   5.4.2009, 9:56
- - CrackedMind   А кто-нибудь обратил внимание, что в 4.5 появились...   11.4.2009, 23:06
- - Sokoloff   Обнаружил тут, что QImage умеет читать postscript ...   6.5.2009, 9:47
- - Litkevich Yuriy   Цитата(Sokoloff @ 6.5.2009, 13:47) ghosts...   6.5.2009, 10:06
- - Sokoloff   Цитата(Litkevich Yuriy @ 6.5.2009, 11:06)...   6.5.2009, 10:18
- - SABROG   Думаю никто не будет против, если я буду использов...   8.5.2009, 21:50
- - SABROG   Немного про нормализацию сигнатур. Мое внимание пр...   20.6.2009, 15:02
- - SABROG   Пользователи Qt, которые собирают свои приложения ...   28.6.2009, 13:52
- - Litkevich Yuriy   -O3 на самом деле не макисальная, а альтернативная...   28.6.2009, 14:28
|- - AD   0x - полная автоматизация. Ее ведь тоже можно испо...   28.6.2009, 15:04
- - Litkevich Yuriy   Цитата(AD @ 28.6.2009, 19:04) 0xтакого кл...   28.6.2009, 15:27
|- - AD   Цитата(Litkevich Yuriy @ 28.6.2009, 16:27...   28.6.2009, 16:19
- - trdm   Не такая уж и опечатка, у человека правильно мозг...   28.6.2009, 16:45
|- - AD   Цитата(trdm @ 28.6.2009, 17:45) Не такая ...   28.6.2009, 17:25
- - SABROG   __fastcall в стиле Qt. В Delphi и MSVC есть аттриб...   6.7.2009, 13:39
- - SergSh   QListView при инициализации считывает все строки д...   27.8.2009, 9:49
|- - SABROG   Цитата(SergSh @ 27.8.2009, 9:49) Чтобы эт...   23.2.2010, 19:39
- - SABROG   Кроссплатформенный метод установки приоритета для ...   23.2.2010, 16:36
- - Litkevich Yuriy   Ну собственно один вариант ещё и в списке рассылке...   23.2.2010, 19:22
- - SABROG   Выложу сегодня 2 полезных "хака", которы...   2.4.2010, 0:05
|- - Andrewshkovskii   Цитата(SABROG @ 2.4.2010, 1:05) Выложу се...   17.4.2010, 15:48
|- - xls   Цитатаnamespace Hack { template <class To, clas...   31.8.2010, 11:31
- - loz   Думаю что в данной теме необходимо упомянуть об ин...   11.4.2010, 8:56
- - SABROG   Цитата(Andrewshkovskii @ 17.4.2010, 16:48...   19.4.2010, 12:13
- - SABROG   Администратор одного программерского форума удалил...   24.4.2010, 11:55
- - Andrewshkovskii   Да, я тоже заметил, что удалили. Хотел инфу кое-ка...   24.4.2010, 12:11
- - igor_bogomolov   Цитата( SABROG)Администратор одного программерског...   24.4.2010, 12:11
- - SABROG   Администратор это объяснил так: ЦитатаВсе блоги, ...   24.4.2010, 15:44
- - SABROG   На заметку: Заполняем Qt контейнер без for: #incl...   26.5.2010, 17:27
- - Litkevich Yuriy   а зачем в struct testAttributePredicate оператор ...   26.5.2010, 19:17
|- - SABROG   Цитата(Litkevich Yuriy @ 26.5.2010, 20:17...   26.5.2010, 20:13
- - SABROG   Реализовал установку приоритета потока в параллель...   21.6.2010, 18:23
|- - kuzulis   SABROG, а с Троллями (нокией) пробовали это обсуди...   21.6.2010, 18:54
|- - SABROG   Цитата(kuzulis @ 21.6.2010, 19:54) SABROG...   22.6.2010, 11:19
- - SABROG   В старом проекте на Borland Builder C++ у меня был...   23.6.2010, 14:52
- - SABROG   Продолжил издеваться над кнопками и qss: qss QP...   25.6.2010, 11:57
- - Алексей1153   Обнаружил любопытный спецэффект: если в качестве п...   1.8.2010, 11:53
- - SABROG   Заметил интересную особенность при сериализации сп...   20.8.2010, 18:25
|- - aliks-os   Уважаемый Sabrog, вы показали как записывать в ini...   6.3.2011, 21:24
- - SABROG   Цитата(Гость_xls_* @ 31.8.2010, 12:31) К ...   1.9.2010, 8:21
|- - xls   Цитата(SABROG @ 1.9.2010, 8:21) Цитата(Го...   2.9.2010, 9:08
|- - SABROG   Цитата(xls @ 2.9.2010, 10:08) QTabWidgetP...   5.9.2010, 18:55
- - xls   Цитата(SABROG @ 5.9.2010, 18:55) Через in...   6.9.2010, 9:27
|- - SABROG   Цитата(xls @ 6.9.2010, 10:27) ИМХО, лучше...   7.9.2010, 8:43
|- - Гость_xls_*   Цитата(SABROG @ 7.9.2010, 8:43) Цитата(xl...   13.11.2010, 12:35
- - kwisp   Цитата(SABROG @ 7.9.2010, 8:43) Думаю это...   13.11.2010, 13:15
- - SABROG   Понадобилось отследить изменения в файле, который ...   18.1.2011, 20:11
- - igor_bogomolov   Если вы пишите плагины для QtDesigner и хотите что...   20.1.2011, 15:00
- - Алексей1153   Цитата(igor_bogomolov @ 20.1.2011, 17:00)...   22.1.2011, 22:05
- - SABROG   В Wiki, на Developer Network нашел интересный вари...   25.1.2011, 22:15
- - Litkevich Yuriy   Цитата(aliks-os @ 6.3.2011, 23:24) а...   6.3.2011, 21:30
- - Day   Цитата(Петров Виталий @ 18.9.2008, 8:31) ...   26.3.2012, 11:48
- - Litkevich Yuriy   Обсуждение вынес в отдельную тему: Работа с QSplit...   18.2.2013, 8:14
- - Litkevich Yuriy   Цитата(PUMA @ 30.4.2015, 3:30) А есть спо...   7.5.2015, 11:53


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


16 чел. читают эту тему (гостей: 16, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 23:35