Как создать свой функционал QWidget?
Я решил учиться основам QtCreator через попытку создать программу для управления радиоуправляемого ровера. Уже не раз сообщество stackoverflow мне помогало, надеюсь и в этот раз поможет :)
ЗАДАЧА: Есть макет программы, созданной в QtDesigner (см. скриншот). Я поделил главное окно на 3 QWidget-а, чтоб в каждом из них отображать определенную информацию (Черный - сводка о технике, Зеленый - живая карта перемещения, Серый - трансляция видео с камеры на борту).
ВОПРОС:
Как создать нужный функционал каждого Виджета?
Следует писать собственные QWidget-ы?
Что использовать если я захочу нарисовать простенькое меню в одном из окон? Это должно отображаться в коде виджета, ан не главного окна?
Я находил подобные вопросы, но в виду неопытности в 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>
