Как создать свой функционал QWidget?

Я решил учиться основам QtCreator через попытку создать программу для управления радиоуправляемого ровера. Уже не раз сообщество stackoverflow мне помогало, надеюсь и в этот раз поможет :)

ЗАДАЧА: Есть макет программы, созданной в QtDesigner (см. скриншот). Я поделил главное окно на 3 QWidget-а, чтоб в каждом из них отображать определенную информацию (Черный - сводка о технике, Зеленый - живая карта перемещения, Серый - трансляция видео с камеры на борту).

ВОПРОС:

  1. Как создать нужный функционал каждого Виджета?

  2. Следует писать собственные QWidget-ы?

  3. Что использовать если я захочу нарисовать простенькое меню в одном из окон? Это должно отображаться в коде виджета, ан не главного окна?

Я находил подобные вопросы, но в виду неопытности в Qt, не совсем понимаю как и зачем это стоит делать. Если и пишут, то поверхностно. Надеюсь кому-то не будет в тягость описать подробно :)

Пока, что Qt остается для меня запутанным ПО, так что буду рад хотя бы ссылкам на подходящие статьи.

ПС: детали связи ровера с программой мне известны.

Скриншот

Ui:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>GcsWindow</class>
 <widget class="QMainWindow" name="GcsWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1000</width>
    <height>630</height>
   </rect>
  </property>
  <property name="minimumSize">
   <size>
    <width>1000</width>
    <height>630</height>
   </size>
  </property>
  <property name="windowTitle">
   <string>GcsWindow</string>
  </property>
  <property name="styleSheet">
   <string notr="true"/>
  </property>
  <widget class="QWidget" name="centralwidget">
   <property name="minimumSize">
    <size>
     <width>1000</width>
     <height>630</height>
    </size>
   </property>
   <property name="sizeIncrement">
    <size>
     <width>1</width>
     <height>1</height>
    </size>
   </property>
   <property name="baseSize">
    <size>
     <width>1000</width>
     <height>630</height>
    </size>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <property name="spacing">
     <number>0</number>
    </property>
    <property name="leftMargin">
     <number>0</number>
    </property>
    <property name="topMargin">
     <number>0</number>
    </property>
    <property name="rightMargin">
     <number>0</number>
    </property>
    <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
     <widget class="QFrame" name="frame_UpperBar">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="frameShape">
       <enum>QFrame::NoFrame</enum>
      </property>
      <property name="frameShadow">
       <enum>QFrame::Raised</enum>
      </property>
      <property name="lineWidth">
       <number>0</number>
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout">
       <property name="spacing">
        <number>0</number>
       </property>
       <property name="leftMargin">
        <number>0</number>
       </property>
       <property name="topMargin">
        <number>0</number>
       </property>
       <property name="rightMargin">
        <number>0</number>
       </property>
       <property name="bottomMargin">
        <number>0</number>
       </property>
       <item>
        <widget class="QPushButton" name="BUT_Menu">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
           <horstretch>0</horstretch>
           <verstretch>0</verstretch>
          </sizepolicy>
         </property>
         <property name="minimumSize">
          <size>
           <width>80</width>
           <height>30</height>
          </size>
         </property>
         <property name="styleSheet">
          <string notr="true">QPushButton {
       background-color: rgb(235,235,235);
       border-radius: 1px;
        Text-align:center;
    }
QPushButton:hover{
    background-color:rgb(225, 225, 225);
    }
QPushButton:pressed {
     background-color: rgb(200,200,200);
     border-style: inset;
    }
QPushButton:open{
    background-color: rgb(200,200,200);
    border-style: inset;
}</string>
         </property>
         <property name="text">
          <string>MENU</string>
         </property>
        </widget>
       </item>
       <item>
        <spacer name="spacer_UpperBar">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
         <property name="sizeHint" stdset="0">
          <size>
           <width>40</width>
           <height>20</height>
          </size>
         </property>
        </spacer>
       </item>
      </layout>
     </widget>
    </item>
    <item>
     <widget class="QFrame" name="frame_all_widgets">
      <property name="styleSheet">
       <string notr="true"/>
      </property>
      <property name="frameShape">
       <enum>QFrame::StyledPanel</enum>
      </property>
      <property name="frameShadow">
       <enum>QFrame::Raised</enum>
      </property>
      <layout class="QGridLayout" name="gridLayout">
       <property name="leftMargin">
        <number>0</number>
       </property>
       <property name="topMargin">
        <number>0</number>
       </property>
       <property name="rightMargin">
        <number>0</number>
       </property>
       <property name="bottomMargin">
        <number>0</number>
       </property>
       <property name="spacing">
        <number>0</number>
       </property>
       <item row="0" column="0">
        <widget class="QSplitter" name="splitter_hor">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
         </property>
         <property name="handleWidth">
          <number>1</number>
         </property>
         <widget class="QSplitter" name="splitter_ver">
          <property name="styleSheet">
           <string notr="true">QSplitter::handle {
  
}
</string>
          </property>
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
          <property name="handleWidth">
           <number>5</number>
          </property>
          <widget class="Widget_1" name="widget_1" native="true">
           <property name="sizePolicy">
            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
             <horstretch>0</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
           </property>
           <property name="minimumSize">
            <size>
             <width>400</width>
             <height>400</height>
            </size>
           </property>
           <property name="maximumSize">
            <size>
             <width>400</width>
             <height>400</height>
            </size>
           </property>
           <property name="baseSize">
            <size>
             <width>0</width>
             <height>0</height>
            </size>
           </property>
           <property name="styleSheet">
            <string notr="true">background-color: rgb(33, 33, 33);</string>
           </property>
          </widget>
          <widget class="QWidget" name="widget_2" native="true">
           <property name="minimumSize">
            <size>
             <width>400</width>
             <height>0</height>
            </size>
           </property>
           <property name="styleSheet">
            <string notr="true">background-color: rgb(85, 170, 127);</string>
           </property>
          </widget>
         </widget>
         <widget class="QWidget" name="widget_3" native="true">
          <property name="styleSheet">
           <string notr="true">background-color: rgb(156, 156, 156);</string>
          </property>
         </widget>
        </widget>
       </item>
      </layout>
     </widget>
    </item>
   </layout>
  </widget>
 </widget>
 <customwidgets>
  <customwidget>
   <class>Widget_1</class>
   <extends>QWidget</extends>
   <header>widget_1.h</header>
   <container>1</container>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>


Ответы (0 шт):