crossplatform.ru

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

История благодарностей участнику Алексей1153 ::: Спасибо сказали: 215 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
19.3.2019, 7:40 opencv и распознавание текста - с чего начать?
Цитата(romingood @ 18.3.2019, 19:50) *
Подскажите, плз, в какую сторону читать-смотреть-изучать?


OpenCV тяжёлая библиотека (и собирать её - то ещё приключение, насколько мне запомнилось по своему опыту), лучше, мне кажется, поискать что-то более специализированное
https://www.google.ru/search?newwindow=1&am...i10.Z9S9j7B3SJk
romingood,
1.3.2019, 20:03 Прокрутка в QScrollArea
Анна,


Раскрывающийся текст
вместо такой конструкции

const char *className = target->metaObject()->className();
if(QString(className) == QString("QComboBox"))
{
    ...
}


удобнее использовать такую
if(auto* w=dynamic_cast<QComboBox*>(target))
{
    w->...
}


накидал вот вариант обработчика. В аттаче файлы тестового диалога, создай диалог, чтобы посмотреть работу класса обработчика:

    MyWidget dlg(0);
    dlg.exec();


[attachment=1972:CMyScrollHandler.zip]
Анна,
27.2.2019, 7:44 Прокрутка в QScrollArea
Анна, прочитай описание
void QWidget::wheelEvent(QWheelEvent *event)

у тебя есть несколько вариантов:

1) для виджета scrollarea->widget запретить обработчик wheelEvent (тогда прокрутка будет возможна только ползунком)

2) для всех чайлдов scrollarea->widget поставить фильтр installEventFilter, а в eventFilter запрещать выполнение прокрутки чайлдов QEvent::Wheel. Тогда останется возможность всё крутить колесом, но контролы не будут дёргаться

3) самый сложный и самый "красивый" вариант: частично как №2 , но разрешать обработку прокрутки в чайлде, если на нём стоит фокус. Если же прокрутка производится не в чайлде, то фокус с чайлда убирать на scrollarea. Тогда чайлды будут иметь свою крутилку только тогда, когда по нему щёлкнули и сразу стали крутить колесо. Когда курсов уехал по scrollarea->widget, чайлдовая крутилка отключается
Анна,
31.1.2019, 11:09 QTableWidget с закреплёнными слолбцами
NicNici, вроде нет такой фичи, но есть следующие идеи:

------------------------------
вариант 1:

берём два одинаковых по количеству колонок виджета (QTableWidget) T0 и T1,
T1 размещается на T0 как чайлд (без использования компоновщика, чтобы не было спонтанных изменений размера).
T1 делается по высоте равным T0
T1 делается по ширине таким, чтобы слева и справа остались виднЫ нужные (первая и последняя) колонки T0
левый край T0 совмещается с правым краем первой колонки.
Также на T1 скрываются колонки первая и последняя

модели обеих таблиц - одинакового класса - отображают данные из одного источника (но экземпляров модели - два, так как один экземпляр нельзя в два просмотра толкать)

В итоге, визуально имеем T1 без первой и последней колонок, остальные колонки мотаются. Справа и слева видны торчащие колонки T0 (первая и последня). Ну и нужно синхронизировать вертикальную прокрутку

плюсы: полная функциональность таблиц
минусы: придётся плотно посидеть с напильником
------------------------------
вариант 2:

скрыть первую и последнюю колонки
добавить виджету широкий border слева и справа, где вручную отрисовать имитацию колонок

плюсы: "малоинвазивность"
минусы: отрисовка вручную, ну и функционал колонок нужно реализовывать вручную, если нужна интерактивность
NicNici,
28.5.2018, 8:24 QMutex. Принудительная блокировка для ожидания команды
MishaUA, нет, не правильный подход в корне

ты считаешь, что можно включить блок в одном потоке и отключить его во втором. Это не так. Каждый поток вызывает собственную пару lock-unlock, а система обеспечивает, что эти два "блока" не пересекутся во время выполнения кода обоих потоков

в твоём случае можно suspend второй поток. И в первом потоке запускать второй по некоему отсчёту времени

и вот так наизнанку никогда не делай

while(1) {
m.unlock();

m.lock();
}


Строго в порядке

Цитата
m.lock();
m.unlock();


Для этого есть специальный класс QMutexLocker. Пример:

//начало синхронизируемого блока
{
   QMutexLocker locker(&m);

   //синхронизируемый код

}
97WzugSKd31, 9or6UxhWRa1, gHzcXItj3a1,
8.4.2018, 8:10 QProcess
Noob256, запусти редактор, а потом в диспетчере задач погляди содержимое командной строки (есть там такая колонка, по умолчанию отключена)
DaLgAMYeVr1, gHzcXItj3a1, hxr3Wawd9g1,
8.4.2018, 8:07 Скриншот окна по имени
Noob256,

должно быть
#include <windows.h>

как HBITMAP засунуть в QPixmap -
https://msdn.microsoft.com/en-us/library/wi...9(v=vs.85).aspx

но придётся ковыряться в форматах.

Можно попробовать так - создать совместимый (по размеру) с битмапом HDC, создать для него полноцветный HBITMAP (bitmap_dst), распечатать туда исходный битмап, а потом с bitmap_dst в едином полноцветном формате копировать при помощи GetDIBits

97WzugSKd31, hxr3Wawd9g1,
30.3.2018, 7:33 Android. Процесс, запущенный в отдельном потоке, завершается через время если приложение свернуть
MishaUA, очевидно, что нужно не доходить до строки
return a.exec();
, а ждать, пока поток thr не разрешит это сделать

а окно можно скрыть
w.hide();
gHzcXItj3a1,
18.11.2017, 8:48 Есть-ли здесь СПЕЦЫ ?
Цитата(Iron Bug @ 16.11.2017, 15:53) *
А вотЪ если подумать над этим, то можно _тратить_ ресурсов на _порядок_ (а то и два) меньше, при схеме с прерываниями
Хорошо если этот поток "упадёт" на свободное ядро, и если это доп-е ядро в проце есть, - а если нет !?


по ресурсам меня там всё устраивает, комп работает быстрее железяки ) И даже быстрее десяти таких железяк

Потоки система всегда раскидывает по "свободным" ядрам, об этом в общем случае можно не думать. Но, если что, можно озаботится расстановкой affinity и даже priority.

Если нет дополнительного ядра, то прерываниями ты ну никак не разгонишь производительность. Скорость реакции - да, но производительность - нет
9or6UxhWRa1,
15.11.2017, 8:29 Есть-ли здесь СПЕЦЫ ?
JohnZ, не задумывался об этом, меня устраивает поток на 100%
9or6UxhWRa1,
14.11.2017, 6:47 Есть-ли здесь СПЕЦЫ ?
я использовал в винде libusb, именно в отдельном потоке. Нормальная штука, работает чётко, в отличие от зависающего майкрочиповского драйвера
9or6UxhWRa1, hxr3Wawd9g1,
19.10.2017, 7:21 Запарсить данные приложения написанным на Qt
Pacan228, окно на Qt использует только одно верхнее апишное HWND окно, всё остальное рисует на этом окне библиотека без виндовых хендлов.

А таблицы эти - они же где-то хранятся, наверное ? Не в окне же. Ну либо самый экстремальный вариант - делать распознавание графики с окна и сдирать таким образом текст
9or6UxhWRa1, gHzcXItj3a1, hxr3Wawd9g1,
18.10.2017, 7:09 QProcess и разворачивание свёрнутого окна процесса
Анна, можно попробовать так - потрясти за винапи

найти главное окно процесса, вот тут есть пример
http://forums.codeguru.com/showthread.php?...-process-handle

достать адрес оконной процедуры (параметр GWL_WNDPROC)
https://msdn.microsoft.com/ru-ru/library/wi...4(v=vs.85).aspx

и при помощи функции
https://msdn.microsoft.com/ru-ru/library/wi...1(v=vs.85).aspx

отправить сообщение WM_SHOWWINDOW
https://msdn.microsoft.com/en-us/library/wi...5(v=vs.85).aspx
Анна,
21.7.2017, 7:33 QDataWidgetMapper и несколько QCombobox
iCast, можно предположить, что model->fieldIndex("car_name") и model->fieldIndex("task_name") возвращают одинаковые значения. Проверь
iCast,
7.6.2017, 7:56 Можно ли сделать, что бы в Qt Creator можно было кирилические названия?
честно - никогда не заморачивался, просто пути сделал не кириллические )

спотыкается не сам креатор, по сути, а компиляторы-линкеры-утилиты всякие. Наверное, никто не будет их обучать кириллице
97WzugSKd31, 9or6UxhWRa1, gHzcXItj3a1,
12.4.2017, 18:16 #pragma pack и __attribute__
попробуй так

#ifdef Q_OS_WIN32
#define __attribute__(a)  //ничего не делаем
#endif

#ifdef Q_OS_WIN32
#pragma pack(push, 1)
#endif
typedef struct __attribute__ ((packed))
{
...
}MyStruct;
#ifdef Q_OS_WIN32
#pragma pack(pop)
#endif


в линуксе это тоже какой-то дефайн, видимо



а вообще в C++ вот так уже не модно делать:
typedef struct
{
...
}MyStruct;


вот так моднее )
struct MyStruct
{
...
};


Анна, и вопрос - зачем тебе выравнивание на 1 байт ? Это нужно обычно в случае работы с железякой или старыми структурами, то есть там, где байты должны быть чётко на своих местах без фантазий компилятора
Анна,
20.1.2016, 8:03 QString объект из функции.
Ponchikus, ты выводишь адрес локальной переменной, которая уже будет уничтожена по выходу из функции. Поэтому адрес вполне уже может использоваться под новые нужды. Значение, которая вернула функция, используется в конструкторе при создании нового объекта (QString str), для которого и был использован уже освободившийся адрес


кстати, вот так

QString str;
str=returnStr();
qDebug()<<&str;



адрес может быть выведен другой (по логике - он обязательно другой будет)
Ponchikus,
23.12.2015, 7:58 Перевести код под gtk+3.6.4
а что именно не работает ?

навскидку - не видно, где создаётся память для widget. А на инициализацию переменных вообще тут поклали
lss,
16.12.2015, 13:46 QFileSystemModel и полное сканирование папок
dmsovetov, не знаю, как насчёт одинаковых имён, я к своим слотам и сигналам приписываю префиксы slot_ и signal_ всегда, чтобы не нарываться на одинаковые имена ) Так, на всякий случай. Здесь вроде всё правильно компилятор понимает

ещё момент. Я добавил проверку
    if(!idx.isValid())
    {
        //после переименования файла вне программы попадаем сюда, однако
    }


и вот такой невалидный индекс ты передаёшь в rowCount, после чего ассерт показывается

Причину невалидности не знаю

ViGOur, рекурсии нету, поскольку указаны SLOT и SIGNAL , поэтому препроцессор вроде понимает их как разные сигнатуры
dmsovetov,
16.12.2015, 12:28 Получение порядкового номера QTreeView
poluna, у меня обычно есть "внемодельное" дерево - источник, по которому модель пересобирается. Контейнер обычно на основе QMap<>

struct s_item
{
s_item* m_parent;
QVector<s_item*> m_children;

...

};


s_item* m_root;
QMap<s_item*,s_item*> m_tree;


У тебя этой очень удобной детальки , похоже, нету, поэтому мы не и понимаем друг друга :D В контейнере всё ищется и перебирается запросто
poluna,
15.12.2015, 8:01 Переподключение к БД
SibBear, про сбой не знаю (сбой - это серьёзно :lol: ), а при разрыве связи можно посмотреть

https://dev.mysql.com/doc/refman/5.7/en/auto-reconnect.html

метод QSqlDatabase::setConnectOptions , параметр MYSQL_OPT_RECONNECT

ну и проверяем, что база открыта isOpen

Переподключаться можно точно так же, как подключался

db.close();
db.open();


процесс подключения может быть заметный по времени (скажем так, не мгновенный), так что учитывай это. Я у себя выделил отдельный поток, который заведует открытием базы, а также скидыванием из очереди потока новых сообщений. Ну, и в случае многопоточности также не забывай про синхронизацию
SibBear,
1.6.2014, 18:09 Узнать о подключении телефона к ПК
я сомневаюсь, что это возможно в общем случае

но можно попробовать найти эмулированный телефоном COMпорт и AT командами выведать инфу о устройстве. Если COM не создаётся, то перебирать при помощи WinAPI все устройства и по вендорам, видимо, пытаться выяснить, кто из них кто

детали не смогу подсказать )

Ещё решение может зависить от поставленной цели
abc,
15.5.2014, 9:16 Задание цвета текста и фона недоступного QListWidgetItem с помощью QPalette или CSS
Оля, в QtCreator , в редакторе формы в свойствах найди palette, откроется редактор. Там выбери детальное отображение цветов. А внизу окна - режим, который хочешь настраивать. И экспериментируй , так сказать, визуально )) Я лично там путаюсь немного, да и редко пользуюсь этим

потом можно открыть *.ui редактируемого диалога и найти, как там что расставилось.
Steklova Olga,
12.5.2014, 9:53 Строка StringList по позиции в тексте
ну как бы есть )

std::map<int/*номер в QStringList*/,uint32_t/*индекс в файле*/>
+
обратный мар (только уже multimap)
Alex_under,
10.4.2014, 11:03 в чем сделать исталятор драйвера?
mezmay, попробуй. Я этой утилитой для windriver файлы ставил, может быть проканает и тут
[attachment=1837:wdreg.zip]

я использовал gui-версию, потому что в случае ошибок она выкидывает диалог с обильным логом , есть и просто консольный вариант утилиты

хм, форум чего-то ругается при скачивании. Файлы безопасные так то о_О

[attachment=1838:__________.png]
mezmay,

9 страниц V   1 2 3 > » 
RSS Текстовая версия Сейчас: 19.3.2024, 9:46