Просмотр сообщений
|
Страниц: 1 ... 25 26 [27]
|
391
|
Qt / Общие вопросы / Android скриншоты
|
: Марта 10, 2020, 22:22
|
Доброго времени суток! Понадобилось делать скриншоты с экрана смартфона с целью анализировать их на компьютере. Не проблема: с помощью QProcess и кода adb exec-out screencap -p получаю скриншот, всё ОК. Но вот беда - на 1 снимок уходит больше 2 секунд. А хотелось бы хотя бы 4 кадра в секунду. Как это можно сделать? Телефон не рутованный, ставить какие-то дополнительные программы на него не хотелось бы.
|
|
|
392
|
Qt / Общие вопросы / Re: Qt и clang
|
: Марта 09, 2020, 20:33
|
тогда или так (QMAKE_C[XX]FLAGS) или дописать дополнительные фигурные скобки
Дописал 100500 фигурных скобок.
|
|
|
393
|
Qt / Общие вопросы / Re: Qt и clang
|
: Марта 09, 2020, 16:09
|
Ага. Т.е. предлагается "забить"? Ибо это "нинужно" истинным ценителям кода? Не. Должно быть решение...
|
|
|
394
|
Qt / Общие вопросы / Re: Qt и clang
|
: Марта 09, 2020, 15:51
|
разве что стандартные опции предупреждений в настройках Креатора подправить
Это не очень решение. Если вдруг надо кому то передать проект, то нужно будет или README на эту тему писать или выслушивать жалобы на "а что у тебя тут 100500 предупреждений. Говнокодс..." Пока вижу (как временное решение) написать программу, которая просто разберёт такой массив и иницализирует уже обычным методом. Да - код будет длиннее и запустаннее... Может всё-таки есть какое-то элегантное решение?
|
|
|
395
|
Qt / Общие вопросы / Qt и clang
|
: Марта 09, 2020, 14:38
|
Доброго времени суток! Есть проект, в котором встречается инициализация такого: typedef struct tagRS_BLOCKINFO { int ncRSBlock; int ncAllCodeWord; int ncDataCodeWord;
} RS_BLOCKINFO;
typedef struct tagQR_VERSIONINFO { int nVersionNo; int ncAllCodeWord;
int ncDataCodeWord[4];
int ncAlignPoint; int nAlignPoint[6];
RS_BLOCKINFO RS_BlockInfo1[4]; RS_BLOCKINFO RS_BlockInfo2[4];
} QR_VERSIONINFO;
static QR_VERSIONINFO QR_VersonInfo[] = { { 0 }, { 1, // Ver.1 26, 19, 16, 13, 9, 0, 0, 0, 0, 0, 0, 0, 1, 26, 19, 1, 26, 16, 1, 26, 13, 1, 26, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
Если собирать это с помощью gcc, то всё нормально. Но, если попробовать собрать с помощью clang, то будет куча предупреждений, типа "suggest braces around initialization of subobject" Понятно, что можно бороться с этим, с помощью опций компилятора, но это как-то неправильно. Как мне кажется. Как с таким правильно бороться? Может можно что дописать в .pro файл?
|
|
|
396
|
Qt / Общие вопросы / Re: Qt: преобразованные виджеты
|
: Марта 08, 2020, 15:17
|
это невозможно: достаточно просто взглянуть на сгененрированный код в ui_mainwindow.h. Самым простым решением будет вызвать функцию из MyClass::MyClass() по таймеру с нулевой задержкой: C++ (Qt) QTimer::singleShot(0, [this]{ qDebug() << objectName(); });
Хитро! Но работает. Спасибо!
|
|
|
397
|
Qt / Общие вопросы / Re: Qt: преобразованные виджеты
|
: Марта 07, 2020, 20:28
|
Не вопрос. Вот "на коленке" набросал проект. Фактически то, что я описывал в начале темы. Может быть, я хочу чего-то принципиально невозможного, но я хочу увидеть в консоли "my_widget", а не "MyClass".
|
|
|
398
|
Qt / Общие вопросы / Re: Qt: преобразованные виджеты
|
: Марта 06, 2020, 22:04
|
Нет. "objectName" - обычная пропердь, у экземпляра созданного дызайнером она будет = "Вася", у других пустая строка по умолчанию (или то что им установили)
Вы можете ведь сами проверить - будет не так. Изнутри класса objectName будет одним, а в редакторе - другим. Я в начале тоже думал, что они должны быть одинаковыми - однако реальность показывает другое. P.S. Я, конечно, могу допустить, что в винде всё может быть по-другому. Но меня больше интересуют linux и macos
|
|
|
399
|
Qt / Общие вопросы / Re: Qt: преобразованные виджеты
|
: Марта 05, 2020, 18:44
|
Так он и назначается "снаружи" (а не в коде класса) - см код создаваемый дызайнером
Ну так я и спрашиваю, как именно его увидеть изнутри класса? Я и так знаю, что он создается "дызайнером". 
|
|
|
400
|
Qt / Общие вопросы / Re: Qt: преобразованные виджеты
|
: Марта 04, 2020, 15:23
|
Сделайте методы QByteArray saveState()/void restoreState(const QByteArray &state) в MyClass. В простом случае можно сделать геттер\сеттер для спинбокса. А потом проходите по всем MyClass (или конкретному): for (auto *child : findChildren<MyClass>()) { // получили стейт auto state = child->saveState(); // сохраняем куда-то (в мапу сеттингзы или еще куда) map[child->objectName()] = state; } Проблема в подобном решении в том, что я в КАЖДОМ классе, использующем MyClass буду вынужден вызывать эти самые saveState/restoreState. И стОит где-то это забыть и всё... Хотелось бы как то изнутри MyClass это делать. Один раз написать и забыть. И если бы знать ИЗНУТРИ класса, назначенный ему СНАРУЖИ objectName - было бы просто замечательно.
|
|
|
401
|
Qt / Общие вопросы / Re: Qt: преобразованные виджеты
|
: Марта 04, 2020, 15:08
|
Вопрос: могу ли я как то из класса MyClass увидеть этот самый my_widget? Без использования редактора, просто из кода.
Строго говоря - нет. Код создается для класса экземпляров которого может быть сколько угодно. Отличить проще всего по имени, напр C++ (Qt) void MyClass::DoSometrhing( .. ) { if (this->objectName() == "Вася") .. }
Хотя это конечно коряво  Проблема только в том, что objectName будет у всех таких объектов одинаковый...
|
|
|
402
|
Qt / Общие вопросы / Re: Qt: преобразованные виджеты
|
: Марта 04, 2020, 15:07
|
Допустим, в этом классе MyClass есть объект QSpinBox. И ещё 100500 визуальных компонентов. Я на родительской форме размещаю десяток простых widget, которые затем преобразовываю в MyClass. А теперь я хочу в родительском классе сохранить значения этих QSpinBox. Я могу пройтись по всем QSpinBox и сохранить их значения, всё хорошо. Но как их различить друг от друга - objectName то у всех одинаковый. Если бы я знал objectName "контейнера", то я бы в самом классе сохранял/восстанавливал состояния своих визуальных объектов.
|
|
|
404
|
Qt / Общие вопросы / Qt: преобразованные виджеты
|
: Марта 04, 2020, 14:35
|
Доброго времени суток! 1) Создал свой класс MyClass. 2) Создал форму 3) На форму добавил виджет 4) Преобразовал добавленный виджет в MyClass 5) Задал ему objeсtName в дизайнере, допустим my_widget Вопрос: могу ли я как то из класса MyClass увидеть этот самый my_widget? Без использования редактора, просто из кода.
|
|
|
Страниц: 1 ... 25 26 [27]
|
|
|