Просмотр сообщений
|
Страниц: [1] 2 3 ... 6
|
6
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 29, 2019, 10:44
|
OpenBox тоже рассматривался. Здесь, скорее всего будут проблемы с сертификацией под версию Special Edition, надо выяснять. /offtop Ну и кой-какой опыт я тоже накопил, заничвясь разработкой этого сорта ПО с 1983 г. :-) offtop/
вангую вы с линухами мало знакомы. у астры есть свой сертифицированный репозиторий, можете из него скачать все что нужно. по факту - тот же дебиан тока рабочий стол перепиленый посмотрел на LiveCD с mirror.yandex.ru - опенбокс там есть по дефолту, можно выбрать при входе в выборе типа сессии, при подключении репы с яндекса ставится qtcreator
|
|
|
7
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 28, 2019, 11:00
|
#include <QApplication> #include <QWidget> #include <QString> //#include <QDebug> #include <QMessageBox>
int main(int argc, char** argv) { QApplication app(argc,argv); QWidget w; int ax=100,ay=100,aw=400,ah=300; if (argc == 5) { ax = QString::fromLocal8Bit(argv[1]).toInt(); ay = QString::fromLocal8Bit(argv[2]).toInt(); aw = QString::fromLocal8Bit(argv[3]).toInt(); ah = QString::fromLocal8Bit(argv[4]).toInt(); } //w.setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint); w.setGeometry(ax,ay,aw,ah); while (1) { w.show(); app.exec(); QMessageBox box; box.setIcon(QMessageBox::Warning); box.setText("<font color=red>Приложение остановлено<br>Перезапустить?</font>"); box.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); box.setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); int ok = box.exec(); if (ok != QMessageBox::Ok) break; } }
перезапуск с сообщением например. но по моему опыту - если комп нужен для контроля технологических процессов - ничего лишнего быть не должно. я бы максимум Openbox поставил как WM, без всяких Fly-kiosk
|
|
|
8
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 27, 2019, 13:18
|
Требуется полностью запретить пользователю закрывать и перемещать некоторые окна (не имеющие X или заголовка), а также запретить завершение приложений.
ну вот как вариант - неубираемое, незакрываемое и не перемещаемое окно //respawn.cpp #include <QApplication> #include <QWidget> #include <QString>
int main(int argc, char** argv) { QApplication app(argc,argv); QWidget w; int ax=100,ay=100,aw=400,ah=300; if (argc == 5) { ax = QString::fromLocal8Bit(argv[1]).toInt(); ay = QString::fromLocal8Bit(argv[2]).toInt(); aw = QString::fromLocal8Bit(argv[3]).toInt(); ah = QString::fromLocal8Bit(argv[4]).toInt(); } w.setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint); w.setGeometry(ax,ay,aw,ah); while (1) { w.show(); app.exec(); } }
запуск Bash #!/bin/sh ./respawn & ./respawn 100 450 500 400 &
останов Bash #!/bin/sh pkill respawn
|
|
|
9
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 26, 2019, 17:23
|
можно перезапускать приложение без потери данных mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow>
namespace Ui { class MainWindow; }
class MainWindow : public QMainWindow { Q_OBJECT
public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow();
private: Ui::MainWindow *ui; };
#endif // MAINWINDOW_H
mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); }
MainWindow::~MainWindow() { delete ui; }
main.cpp #include "mainwindow.h" #include <QApplication>
int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; while (1) { w.show(); a.exec(); } return 0; }
mainwindow.ui XML <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>287</width> <height>265</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralWidget"> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> <widget class="QLineEdit" name="lineEdit"/> </item> <item row="1" column="0"> <widget class="QSpinBox" name="spinBox"/> </item> </layout> </widget> </widget> <layoutdefault spacing="6" margin="11"/> <resources/> <connections/> </ui>
|
|
|
11
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 26, 2019, 12:14
|
попробуйте dwm - самый простой
интересно как к этому отнесутся сами пользователи программы ? ) им будет неудобно, все же привыкли к обычным проведениям окон, мозг вынесут разработчику если только не предполагается использовать комп для одной программы ТС именно так и делается в серьезных системах - все, что не разрешено - запрещено
|
|
|
12
|
Qt / Пользовательский интерфейс (GUI) / Re: Как запретить закрытие окон под Astra Linux
|
: Апрель 26, 2019, 09:16
|
Итого, похоже варианта всего два: 1. Повесить демона, перезапускающего UI при его закрытии (самое простое, но не очень красивое). 2. Взять готовый простейший WM и допилить его до нужного состояния (тут могут быть проблемы с сертификацией под SE). Я, честно говоря, рассчитывал, что найдутся люди, поработавшие с библиотеками libflycore, libflyui, может в них что есть. Никакого описания их я пока не нашел :-(. Спасибо за обсуждение.
я делал такие вещи в тайловых WM. попробуйте dwm - самый простой
|
|
|
15
|
Qt / Общие вопросы / Re: Проверка корректности пути к файлу
|
: Июль 10, 2018, 18:10
|
То что простой, не спорю. Только пока юзверь имя файла напишет, много файлов создастся. А если папка только на запись и удаление запрещенно? А путь как проверить? Особенно /dev/null - этак можно и в системе что нибудь сломать.
а что за права такие - писать можно, а удалять нельзя? если я открою файл на запись и закрою его, файл обнулится. C++ (Qt) QFile f("/home/user/file.txt") if (!open(f,QIODevice::WriteOnly)) { qDebug() << "error open file" }
чем не подходит?
|
|
|
|
|