LINUX.ORG.RU

Qt программа как заставить ее работать правильно.

 


0

1

Уважаемые, Здравствуйте. Есть плата OrangePi PC+ с установленным Armbian. Написал программу на Qt 5.6. Программа работает на плате но.. Сразу вылезла проблема в программе нет ввода с клавиатуры. Решил ее В файл /etc/profile Добавил строку export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb Клавиатура заработала, вроде все ок но..

В программе пользователь меняет значения параметров и это все должно сохраняться в ini файле и тут начинаться чудеса.

Если запустить программу с рабочего стола, то она запускается и все работает, только ini файл не записывается. Так понимаю прав нету. Странно почему программа находиться в моем домашнем каталоге и может писать на диск.

Ладно ок.

Запускаем ее с правами рута и о чудо все пишется в ini файл, но куда-то пропал ввод с клавиатуры.

Подскажите, как сделать так, чтобы программа могла писать на диск и у нее работала клавиатура. Это пока необходимо сделать в данный момент. Главная задача запустить программу в режиме kiosk (вроде это так называется). Что бы подав питание на плату запускалась только эта программа.

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

если что-то не так с правами - сделай

sudo chown -R `whoami` $HOME
. вероятно, ты перед этим запускал программу от рута, и она создала файлы рутовыми правами.

waker ★★★★★
()
Ответ на: комментарий от waker

Спасибо за ответ.

Не помогло.

У меня в программе сделано так. Есть файл settings.ini который лежит в директории с исполняемым файлом. Если его удалить то программа при запуске его создаст с нужными параметрами по умолчанию.

Я вообще удалил этот файл.

Запускаю свою программу и она не может его создать.

Своей программе я назначил все права

Вроде так

root@orangepipcplus:/home/vvn/TplCom# ls -l programma
-rwxrwxrwx 1 root root 710313 Dec 26 22:28 programma

Запускаю ее с рабочего стола и все равно файл settings.ini не создается.

Это происходит только при запуске программы от sudo

Еще дал все права файлу settings.ini

root@orangepipcplus:/home/vvn/TplCom# ls -l settings.ini
-rwxrwxrwx 1 root root 354 Jan 5 10:23 settings.ini

Avakadak
() автор топика
Ответ на: комментарий от Avakadak

а, кажется я понял.

ты создаешь файл по относительному пути «settings.ini», который может быть где угодно, а не в папке с твоей программой.

вместо этого, тебе нужно вычислить путь твоей программы, и добавить к нему settings.ini.

waker ★★★★★
()
Ответ на: комментарий от waker

Не с путями все правильно если я удаляю «settings.ini» его в директории своей программы то она его не находит.

Но вроде как раз рулил эту ситуацию. помогло назначение прав для всей директории chmod -R 777 myProgramm/

Может, что неправильно конечно делаю, так, как в Линуксе я полный ноль.

Теперь бы понять как запустить эту программу на весь экран и что бы ничего больше пользователю было не доступно.

Avakadak
() автор топика
Ответ на: комментарий от Avakadak

Запускаю свою программу и она не может его создать

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

XMs ★★★★★
()
Последнее исправление: XMs (всего исправлений: 2)
Ответ на: комментарий от maxis11

Про это я знаю.

Если программа запускается в GUI то она открывается на весь экран.

Тут я наверное не так выразился. Хочется следующее.

При включении питания платы, что бы запустилась только моя программ.

Пользователь должен видеть перед собой только ее.

В идеале хочется что бы графический интерфейс вообще не запускался.

Что я сделал

systemctl disable nodm

Этим самым отключаю графику при загрузке системы.

Система грузится и на экране приглашение командной строки.

Захожу под своим именем и запускаю программу

startx ./myProgramm

Она запускается, но не на весь экран.

Вот это очень хочется порешать.

Как полностью автоматизировать этот процесс и развернуть программу на весь экран.

Avakadak
() автор топика
Ответ на: комментарий от Avakadak

Погугли autologin armbian
Насчет размера программы - какой размер ты указал в исходниках - такой и получил! Укажи фиксированный размер главного окна, равный размеру экрана - получишь окно на полный экран.
Другой вариант - в скрипте запуска твоей проги прописать изменение разрешения экрана через xrandr

sigurd ★★★★★
()
Ответ на: комментарий от sigurd

Спасибо поискал все получилось.

Сделал следующее

1 Делаем авто логин

Добавляем файл с привилегиями root

/lib/systemd/system/getty@tty1.service.d/20-autologin.conf

Если такой директории и файла нет то создаем их После чего в файл

/lib/systemd/system/getty@tty1.service.d/20-autologin.conf

дописываем следующие строки

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin myName --noclear %I $TERM

myName - ваш логин под которым хотите зайти

2 Отключаем графический интерфейс

У меня получилось так (пробовал по разному но получилось так)

sudo systemctl disable nodm

Если нужно будет снова включить графический интерфейс то так

sudo systemctl enable nodm

после чего

sudo reboot

Система перегрузится и мы в командной строке

Теперь что бы запустить программу набираем следующее

startx my_programm -kiosk

Так работает.

Осталось найти как сделать скрипт для старта программы автоматом

Avakadak
() автор топика
Ответ на: комментарий от Avakadak

Осталось найти как сделать скрипт для старта программы автоматом

Для этого существуют ~/.bash_profile и /etc/profile

sigurd ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.