Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Qt5 on BeagleBone: windows have no title and border

Qt5 on BeagleBone: windows have no title and border

Scheduled Pinned Locked Moved Mobile and Embedded
8 Posts 5 Posters 4.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    ProstoTyoma
    wrote on last edited by
    #1

    Hardware: Beaglebone Black
    Linux: Linux 3.8 with opengl support
    Qt version : qt-everywhere-opensource-src-5.3.1

    Configure options: ./configure -release -force-debug-info -confirm-license -nomake tests -nomake examples -opensource -opengl es2 -device linux-beagleboard-g++ -device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- -prefix /usr/qt5 -no-largefile -no-accessibility -no-openssl -no-pulseaudio -no-alsa -no-cups -no-pch -eglfs -directfb -linuxfb -no-xcb -make libs -I /home/tim/BB/archive/Graphics_SDK_5_01_01_01/include/OGLES2 -L /home/tim/BB/archive/Graphics_SDK_5_01_01_01/gfx_rel_es8.x -xplatform linux-beagleboard-g++ -skip webkit

    Configure result: http://paste.ubuntu.com/7857121/

    As result windows have no title bars and borders. I've tried to create simple app which shows message box and tried to use example from qtbase/widgets/mainwindows/application.

    Result:
    MessageBox: http://beta.hstor.org/files/7d6/d46/83a/7d6d4683a187483a98bdd095c5e649a3.jpg
    mainwindow app: http://beta.hstor.org/files/d8a/a6a/b34/d8aa6ab342e24ff29388c38344272de5.jpg

    I've tried different platforms (linuxfb, eglfs, minimal) and styles. Nothing helps.And only eglfs shows fullscreen app.
    Also, touchscreen works as Y coordinate is 3-5 mm lower, than it actually is. I should press touchscreen 3-5 mm under the button to press it.

    MessageBox and examples works good for Qt 4.8.

    How to fix this problems?

    1 Reply Last reply
    0
    • N Offline
      N Offline
      nasser
      wrote on last edited by
      #2

      Hi;

      I have the same problem when I switch to Qt5.2.1. There is no problem when using Qt4.8.

      I have a custom hardware platform around Cortex-A8 and I'm suing 'linuxfb' as I don't use openGL.

      Any help would greatly be appreciated.

      1 Reply Last reply
      0
      • N Offline
        N Offline
        nasser
        wrote on last edited by
        #3

        Hi;

        I have the same problem when I switch to Qt5.2.1. There is no problem when using Qt4.8.

        I have a custom hardware platform around Cortex-A8 and I'm suing 'linuxfb' as I don't use openGL.

        Any help would greatly be appreciated.

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #4

          Hi and welcome to devnet,

          With Qt 4.8 you had QWS which was doing the windowing and decoration. With Qt 5, if you want windowing you need to use e.g. wayland

          Hope it helps

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #5

            Hi and welcome to devnet,

            With Qt 4.8 you had QWS which was doing the windowing and decoration. With Qt 5, if you want windowing you need to use e.g. wayland

            Hope it helps

            Interested in AI ? www.idiap.ch
            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

            1 Reply Last reply
            0
            • A Offline
              A Offline
              agocs
              wrote on last edited by
              #6

              Yes, like SGaist said, Qt 5 does not provide a built-in windowing system anymore. For most embedded projects this won't matter since they anyway use a custom UI better suited for these environments. Nonetheless, you can still implement your own window decorations, if you wish.

              Alternatively, you can use a real windowing system (although the available options may naturally be limited, depending on your platform), like Wayland or X11.

              That said, in general the best performing option is usually to go for Qt Quick with eglfs.

              1 Reply Last reply
              0
              • A Offline
                A Offline
                agocs
                wrote on last edited by
                #7

                Yes, like SGaist said, Qt 5 does not provide a built-in windowing system anymore. For most embedded projects this won't matter since they anyway use a custom UI better suited for these environments. Nonetheless, you can still implement your own window decorations, if you wish.

                Alternatively, you can use a real windowing system (although the available options may naturally be limited, depending on your platform), like Wayland or X11.

                That said, in general the best performing option is usually to go for Qt Quick with eglfs.

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  KyleFarn
                  wrote on last edited by
                  #8

                  I am using the same setup (BeagleBone Black with eglfs2, QT5.5) and found another solution that might work depending on how you want the title presented. In my case, the QT project is a customized touchscreen-only app that does need the classic window looking frame. I found out if I use QMessageBox::setText() it puts the text to the right of the icon. If I use QMessageBox::setInformativeText() it places the text in the center of the window as expected. QMessageBox::setWindowTitle() never shows up.
                  So I wrote a derived class and overrode setWindowTitle() to call setText(). Made sure it was setup for Qt::AutoText so I could center and bold the title.
                  I also overrode the static information, critical, question and alert methods so I wouldn't have to modify (too much) existing code written for qt 4.X.

                  Source:

                  MessageBox::MessageBox(QWidget *parent) : 
                      QMessageBox(parent)
                  {
                      setTextFormat(Qt::AutoText);
                  }
                  
                  
                  MessageBox::~MessageBox()
                  {
                  }
                  
                  void MessageBox::setWindowTitle(QString titleStr)
                  {
                      setText("<center><b>" + titleStr + "</b></center>");
                  }
                  
                  MessageBox::StandardButton MessageBox::messageBox(QWidget *parent, const QString &title,
                           const QString &text, MessageBox::StandardButtons buttons, MessageBox::StandardButton defaultButton,
                           QMessageBox::Icon icon)
                  {
                      MessageBox msgBox(parent);
                      msgBox.setWindowTitle(title);
                      msgBox.setInformativeText(text);
                      msgBox.setIcon(icon);
                      msgBox.setStandardButtons(buttons);
                      msgBox.setDefaultButton(defaultButton);
                      if (msgBox.exec() == -1)
                          return QMessageBox::Cancel;
                      return msgBox.standardButton(msgBox.clickedButton()); 
                  }
                  
                  MessageBox::StandardButton MessageBox::information(QWidget *parent, const QString &title,
                           const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton)
                  {
                      return messageBox(parent, title, text, buttons, defaultButton, QMessageBox::Information);
                  }
                  
                  MessageBox::StandardButton MessageBox::question(QWidget *parent, const QString &title,
                           const QString &text,MessageBox::StandardButtons buttons,MessageBox::StandardButton defaultButton)
                  {
                      return messageBox(parent, title, text, buttons, defaultButton, QMessageBox::Question);
                  }
                  
                  MessageBox::StandardButton MessageBox::warning(QWidget *parent, const QString &title,
                           const QString &text,MessageBox::StandardButtons buttons,MessageBox::StandardButton defaultButton)
                  {
                      return messageBox(parent, title, text, buttons, defaultButton, QMessageBox::Warning);
                  }
                  
                  MessageBox::StandardButton MessageBox::critical(QWidget *parent, const QString &title,
                           const QString &text,MessageBox::StandardButtons buttons,MessageBox::StandardButton defaultButton)
                  {
                      return messageBox(parent, title, text, buttons, defaultButton, QMessageBox::Critical);
                  }
                  

                  Header:

                  class MessageBox : public QMessageBox
                  {
                  public:
                      MessageBox(QWidget *parent = NULL);
                      ~MessageBox();
                  
                      void setWindowTitle(QString titleStr);
                  
                      static MessageBox::StandardButton information(QWidget *parent, const QString &title,
                           const QString &text, MessageBox::StandardButtons buttons = Ok,
                           MessageBox::StandardButton defaultButton = NoButton);
                      static MessageBox::StandardButton question(QWidget *parent, const QString &title,
                           const QString &text, MessageBox::StandardButtons buttons = MessageBox::StandardButtons(Yes | No),
                           MessageBox::StandardButton defaultButton = NoButton);
                      static MessageBox::StandardButton warning(QWidget *parent, const QString &title,
                           const QString &text, MessageBox::StandardButtons buttons = Ok,
                           MessageBox::StandardButton defaultButton = NoButton);
                      static MessageBox::StandardButton critical(QWidget *parent, const QString &title,
                           const QString &text, MessageBox::StandardButtons buttons = Ok,
                           MessageBox::StandardButton defaultButton = NoButton);
                  
                  private:
                       static MessageBox::StandardButton messageBox(QWidget *parent, const QString &title,
                           const QString &text, MessageBox::StandardButtons buttons, MessageBox::StandardButton defaultButton,
                           QMessageBox::Icon icon);
                  };
                  
                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved