Как отобразить рамку рамки и строку заголовка в MainWindow на кросс-скомпилированном приложении на RPi3? - PullRequest
0 голосов
/ 28 января 2019

Я использую QT Creator 4.5.2 на основе 5.9.5 в Ubuntu 18 для создания приложения, предназначенного для Raspberry Pi 3 с запущенной Stretch (перекрестная компиляция).

Я могу запустить приложение на RPi3, но главное окно полноэкранного режима без кнопок управления и строки заголовка, и я не могу понять, как это изменить.Я пробовал .show (), .showMaximized () и .showFullScreen (), которые дают одинаковые результаты полноэкранного приложения без рамки или кнопок управления.

Чего мне здесь не хватает?Для краткости, вот сокращенные версии файлов main.cpp и mainwindow.h:

Закомментированные строки - это те функции .show, которые я пробовал, и которые, похоже, дают одинаковые результаты.Примечание: в коде нет других ссылок на любые функции .show.

main.cpp:

#include "mainwindow.h"
#include <QDialog>
#include <QApplication>
#include <QScreen>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QScreen *screen = QGuiApplication::primaryScreen();
    QRect  screenGeometry = screen->geometry();
    int height = screenGeometry.height();
    int width = screenGeometry.width();
    MainWindow w;
    w.resize(height-100, width-100);
    w.setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint | Qt::WindowFullscreenButtonHint | Qt::WindowTitleHint);
    //w.show();
    //w.showMaximized();
    w.showFullScreen();
    return a.exec();
}

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QObject>
#include <QCloseEvent>
#include <QDebug>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;

private slots:
    void closeApp();
};

#endif // MAINWINDOW_H

1 Ответ

0 голосов
/ 28 января 2019

После еще нескольких поисков я обнаружил, что это две переменные окружения, которые не были установлены в QT Creator для кросс-скомпилированного RPI3.Вот как я решил это:

В QT Creator я перешел в «Селектор режимов» -> «Проекты».Затем перешли к настройкам Run для моего Raspberry Pi 3. В разделе Run Environment я щелкнул FETCH DEVICE ENVIRONMENT.Затем в среду устройства я добавил следующие два параметра среды в соответствии с рекомендацией https://forum.qt.io/topic/83929/qxcbconnection-could-not-connect-to-display/16:

Значение переменной

УСТРОЙСТВО: 0

XAUTHORITY / home /pi / .Xauthority

Я запускаю программу с помощью bash-скрипта на RPi, чтобы ее можно было запустить с помощью sudo (я также буду использовать pigpio), и добавил параметр командной строки "-платформа xcb "к скрипту запуска.Поэтому в настройках Project Run я также изменил раздел Run в настройках проекта Raspberry PI RUN на /home/pi/Desktop/runapp.sh ", чтобы запустить программу с помощью программы запуска.

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

...