Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
SABROG |
23.2.2010, 16:36
Сообщение
#61
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Кроссплатформенный метод установки приоритета для приложени. Навеяно этим Link.
Вариант 1. Вариант 2. Установка приоритета после входа в цикл событий. Вариант 3. Более легковесный вариант установки приоритета после входа в цикл событий, если вместо класса Object будет какой-нибудь MainWindow. Для Windows стоит разделять понятия "класс приоритета приложения" и "приоритет потока". Все приложения изначально получают класс приоритета NORMAL_PRIORITY_CLASS и приоритет потока THREAD_PRIORITY_NORMAL. Предположим, что мы вызываем метод QThread::setPriority(QThread::TimeCriticalPriority), чтобы выделить самый высокий приоритет. К нашему удивлению в том же TaskManager'e приоритет будет стоять "Средний". Но в Windows количество возможных приоритетов аж 31 штука. Самый высокий достигается комбинацией установки класса REALTIME_PRIORITY_CLASS и приоритета THREAD_PRIORITY_TIME_CRITICAL. В Qt нет возможности установки класса приоритета, поэтому решением может быть вызов WINAPI ::SetPriorityClass(::GetCurrentProcess(), HIGH_PRIORITY_CLASS);, или установка класса через TaskManager, или установка класса приоритета в момент запуска приложения: Установка приоритета приложения для linux может не работать в некоторых ситуациях о чем сказано в документации к метод QThread::setPriority(). Сообщение отредактировал SABROG - 23.2.2010, 16:58 |
|
|
|
|
Litkevich Yuriy |
23.2.2010, 19:22
Сообщение
#62
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Ну собственно один вариант ещё и в списке рассылке, Где создаётся пользовательское событие.
|
|
|
|
|
SABROG |
23.2.2010, 19:39
Сообщение
#63
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Цитата(SergSh @ 27.8.2009, 9:49) Link Чтобы этого не происходило достаточно воспользоваться setGridSize(). Предпочтительней для этих целей использовать метод QListView::setUniformItemSizes(true), эффект аналогичный. |
|
|
|
|
SABROG |
2.4.2010, 0:05
Сообщение
#64
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Выложу сегодня 2 полезных "хака", которые могут пригодится при отладке приложения:
Первый хак - для доступа к приватным классам Qt: Эту функцию можно использовать например для включения функционала в QLineEdit, который пишет текст типа "введите сюда что-нибудь", когда в QLineEdit ничего нет: Или для установки своего виджета вместо QTableCornerButton в QTableView: Второй хак - для перевода перечеслений области имен Qt в текстовые строки: Использовать так: Методы опробованы на Qt версии 4.6.2, в других версиях они могут не работать. Сообщение отредактировал SABROG - 3.4.2010, 8:28 |
|
|
|
|
loz |
11.4.2010, 8:56
Сообщение
#65
|
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 10.4.2010 Пользователь №: 1615 Спасибо сказали: 2 раз(а) Репутация: 0
|
Думаю что в данной теме необходимо упомянуть об интересной возможности Qt - функции прямого копировани участков памяти :
Данная функция копирует n байт из src в dest. Разумеется, вся ответственность за проверку размеров лежит на программисте. Для примера использования могу показать приведение типов, обычными способами которое производится довольно трудоемко, а именно - мне надо было работать со строками в их битовом представлении. В Qt есть два класса - QString и QBitArray, возможности нормальной конвертации данных между ними я найти не смог, а требование к производительности кода было достаточно высоко, пришлось сделать так: И здесь еще есть инетересная особенность класса QBitArray, как вы заметили для обращения к данным в нем мы прибавляли к указателю 1, т.е. данны идут со второго байта, но почему? А потому, что биты из QBitArray хранятся как реальные биты, но т.к. в памяти минимальная еденица хранения - байт, то что же делать с массивом например из 9 бит? Так вот в этом первом байте как раз хранится количество используемых бит последнего байта массива. Все просто =) |
|
|
|
|
Andrewshkovskii |
17.4.2010, 15:48
Сообщение
#66
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1
|
Цитата(SABROG @ 2.4.2010, 1:05) Link Выложу сегодня 2 полезных "хака", которые могут пригодится при отладке приложения: Первый хак - для доступа к приватным классам Qt: Эту функцию можно использовать например для включения функционала в QLineEdit, который пишет текст типа "введите сюда что-нибудь", когда в QLineEdit ничего нет: Вот у меня 2 вопроса : что делает функция этого тимплейта?возвращает указатель на метод приватного класса по имени метода?(с тимплейтами знаком поверхностно, и с указателями на функции практически так же) и 2ой : Я так понимаю, метод и пропертя placeholderText для QLineEdit будет только в версии 4.7 ? |
|
|
|
|
SABROG |
19.4.2010, 12:13
Сообщение
#67
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Цитата(Andrewshkovskii @ 17.4.2010, 16:48) Link что делает функция этого тимплейта? Возвращает указатель, который содержится в d_ptr переменной и приводит его к одному из приватному базовому классу. Например для QLineEdit можно получить сразу 3 приватных класса: QLineEditPrivate, QWidgetPrivate, QObjectPrivate. Нужный можно выбрать. Цитата(Andrewshkovskii @ 17.4.2010, 16:48) Link Я так понимаю, метод и пропертя placeholderText для QLineEdit будет только в версии 4.7 ? Да. |
|
|
|
|
SABROG |
24.4.2010, 11:55
Сообщение
#68
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34
|
Администратор одного программерского форума удалил мой блог, который я вел 2 года. Там был код, который я выкладывал в постах. Никакие кэши гугла и archive.org не сохранили информацию. В общем, если вы не против, то буду тут периодически выкладывать интересные/полезные решения.
--- Добавление сигнала clicked() в QLabel средствами State Machine Framework: Добавление флагов в свой класс на базе QObject'a и вывод состояния флагов в консоль: // myclass.h // myclass.cpp Результат:
Сообщение отредактировал SABROG - 24.4.2010, 17:23 |
|
|
|
|
Andrewshkovskii |
24.4.2010, 12:11
Сообщение
#69
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 351 Регистрация: 27.12.2008 Пользователь №: 467 Спасибо сказали: 18 раз(а) Репутация: 1
|
Да, я тоже заметил, что удалили. Хотел инфу кое-какую почитать..и на тебе..
|
|
|
|
|
igor_bogomolov |
24.4.2010, 12:11
Сообщение
#70
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29
|
Цитата( SABROG) Администратор одного программерского форума удалил мой блог, который я вел 2 года . Имеешь в виду свой блог на vingrade. Очень жаль. Заглядывал иногда. Они как нибудь обосновали свои действия?З,Ы, Может и нам расширение для блогов поставить? |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 15.12.2025, 11:01 |