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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 22.1.2011, 22:05
Сообщение #2


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

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


Цитата(igor_bogomolov @ 20.1.2011, 17:00) *
Посмотрите как изменилось поведение виджета.

прикольно, но только после этого виджет не даёт редактировать свои свойства (помогает только откат действия)


Кстати, что я сюда зашёл то. Как раз тоже про комбобокс:
В поисках удобного выпадающего списка без прочих довесков, причём закрывающегося после потери фокуса или после выбора элемента, обнаружил следующее:

если создать комбобокс, но не показывать его (то есть он всегда hide() ), то, однако, список прекрасно вываливается методом showPopUp
Выбранный индекс берётся из сигнала currentIndexChanged.

перед выводом списка на экран, перед скрытием (hidePopup), очисткой или изменением элементов списка сигнал нужно отсоединять, чтобы не было ложных срабатываний выбора. Подключать же сигнал нужно сразу после метода showPopup


Появляется список под прямоугольником основного окна комбы, то есть так, как буд-то это окно было бы видимо. Если задать высоту комбы 0 (через setGeometry) , то верх списка будет совпадать с верхом комбы

Собственно, искомые мной свойства - закрывается по ESC или при потере фокуса
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 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


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


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




RSS Текстовая версия Сейчас: 26.11.2024, 10:54