Просмотр сообщений
|
Страниц: 1 2 [3] 4 5 6
|
32
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 25, 2019, 11:40
|
Да CloseEvent и так заблокирован, а перемещение почти тоже - см. выше. А вот соседствующие в меню пункты Закрыть окно и Убить приложение - это жесть. Конечно, последнее с подверждением, но все мы знаем, как на автомате жмется OK. Звук в свое время тоже был опробован, специфика не позволила использовать.
|
|
|
34
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 25, 2019, 11:23
|
Мы же не на облаке живем, на разработку нового правильного ПО никто денег не даст, тем более что все и так работает. Да и дело не в надежности самого ПО, все строировано и зарезервировано. Дело в том, что при случайном закрытии пользовательского интерфейса оператор может проморгать важное событие. Прокурор-то его потом в архиве найдет :-). Так что возможность ошибки оператора должна быть сведена к минимуму. Речь идет именно об ошибке, целенаправленные действия не рассматриваем. Кстати, по Ctrl-Alt-Esc ничего не происходит - сейчас проверил.
|
|
|
35
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 25, 2019, 10:55
|
Попробую объяснить, что и для чего. Есть самописная SCADA система 1999-го года рождения. Технологический процесс неважен. Все в ней работает как надо, что много раз проверено. Вот только весь пользовательский интерфейс рабочих мест операторов сделан под Windows (сначала NT 4.0, потом XP, потом Windows 7). Теперь у нас импортозамещение и в список разрешенных ОС Windows больше не входит (а ведь NT 4.0 когда-то входила), а вот Astra Linux SE входит. И показалось, что она наиболее вменяемая, так что надо портировать. Ошибки оператора могут стоить ну очень дорого. Отсюда и весь наезд.
|
|
|
37
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 24, 2019, 15:47
|
Собственно так сейчас все и сделано - closeevent игнорируется, на move посажен свой обработчик. Засада в том, что moveevent происходит только в начале и конце перемещения окна (и то уже после перемещения), так что окно все-таки перемещается и если не завершать процесс перемещения, окно может быть оставлено где угодно (почти). Qt::Tool и так есть и прекрасно работает под Windows, но вот Астре он пофигу. Ну и самый криминал - возможность посылки SIGKILL. Похоже, надо будет все-таки решать проблему работы без wm.
|
|
|
38
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 24, 2019, 15:16
|
Приложение отображает мнемосхемы технологического процесса. Убив приложение оператор может пропустить много важного и не выполнить вовремя то, что положено. От wm врядли можно избавиться (хотя такая идея и приходила мне в голову, а другая бредовая идея была попробовать OpenGl :-) - но тут я не специалист), так как в перспективе переход на SE версию.
|
|
|
39
|
Qt / Пользовательский интерфейс (GUI) / Как запретить закрытие окон под Astra Linux
|
: Апрель 24, 2019, 10:53
|
На форуме Astra Linux мне не ответили, так что попробую спросить здесь. Портирую несколько приложений с Windows 7 Qt 5.7 на Astra Linux (пока CE) Qt 5.11. Требуется полностью запретить пользователю закрывать и перемещать некоторые окна (не имеющие X или заголовка), а также запретить завершение приложений. Желательно вообще убрать системное меню и иконки из панели задач. Это ж надо было догадаться дать даже нерутовоному пользователю возможность грохнуть свое приложение из практически пользовательского интерфейса! И это ОС, разрешенная МО РФ! Сейчас под Windows все это делается платформенно зависимым способом. Как я понимаю, всё это надо делать через API fly-wm, а не через X11, или я ошибаюсь? Просьба подсказать, как это реализовать.
|
|
|
41
|
Qt / Общие вопросы / Re: настройка HIDAPI
|
: Апрель 26, 2018, 15:28
|
А если запустить от имени администратора? Ежели удачно, то потом можно и соответствующий манифест встраивать.
|
|
|
44
|
Qt / Пользовательский интерфейс (GUI) / QLinearGradient в StyleSheet не обрабатывает RGB цвета
|
: Июль 04, 2017, 10:53
|
Собственно, сабж. MSVC 2015 QT 5.7.0. Для проверки написал простенькую программу: #include <QApplication> #include <QPushButton> #include <QStyle> #include <QStyleFactory>
int main( int argc, char *argv[] ) { QApplication a( argc, argv );
QPushButton btn( "aaa" ); btn.setMinimumSize( 20, 20 ); btn.resize( 200, 40 );
btn.setStyle( QStyleFactory::create( "Fusion ") );
//// #1 //btn.setStyleSheet( "QPushButton {\n" // "background-color: QLinearGradient( x1: 0.0, y1: 0.0, x2: 1.0, y2: 0.0, stop: 0.0 #008000, stop: 1.0 #ffff00 );\n" //"}\n" );
// #2 btn.setStyleSheet( "QPushButton {\n" "background-color: QLinearGradient( x1: 0.0, y1: 0.0, x2: 1.0, y2: 0.0, stop: 0.0 red, stop: 1.0 yellow );\n" "}\n" );
//// #3 //btn.setStyleSheet( "QPushButton {\n" // "background-color: QLinearGradient( x1: 0.0, y1: 0.0, x2: 1.0, y2: 0.0, stop: 0.0 rgb( 255, 0, 0 ), stop: 1.0 rgb( 255, 255, 0 ) );\n" //"}\n" );
btn.show();
return a.exec(); }
Варианты 1 и 2 красят кнопку как надо, вариант 3 кнопку не красит. Bug или я ошибаюсь в синтаксисе?
|
|
|
45
|
Qt / Общие вопросы / Re: Обфускация строк бинарника
|
: Октябрь 21, 2016, 11:41
|
У меня сделано просто (в VS2008, но идея понятна), строковые константы вынесены в файл asm, где видны в читаемом виде: .686 .model flat, C
DefXorSym EQU 71h
_STR MACRO string, xorSym IRPC _x0,string DB '&_x0' XOR xorSym ENDM DB xorSym ENDM PUBLIC regKey PUBLIC regSubKey1 PUBLIC regSubKey2
.stack
.data
regKey LABEL BYTE _STR <Software\Microsoft\Windows\CurrentVersion\Policies\System>, DefXorSym regSubKey1 LABEL BYTE _STR <DisableTaskMgr>, DefXorSym regSubKey2 LABEL BYTE _STR <DisableRegistryTools>, DefXorSym
end
В файле cpp объявлено: extern "C" char regKey[]; extern "C" char regSubKey1[]; extern "C" char regSubKey2[]; const unsigned long uXor = 0x71; } Функция декодирования примитивна: идти по массиву и xor'ить, пока не получим нулевой байт. Допилить до Qt-овых особенностей уже нетрудно .
|
|
|
|
|