Kaynağa Gözat

Base realisation of scene manager

Ivan Arkhipov 7 yıl önce
ebeveyn
işleme
1783dea4be

BIN
assets/window/thick_opaque-background.png


BIN
assets/window/thick_opaque-border-botleft.png


BIN
assets/window/thick_opaque-border-botright.png


BIN
assets/window/thick_opaque-border-bottom.png


BIN
assets/window/thick_opaque-border-left.png


BIN
assets/window/thick_opaque-border-right.png


BIN
assets/window/thick_opaque-border-top.png


BIN
assets/window/thick_opaque-border-topleft.png


BIN
assets/window/thick_opaque-border-topright.png


+ 10 - 4
client.pro

@@ -1,6 +1,6 @@
 #-------------------------------------------------
 #
-# Project created by QtCreator 2018-03-07T00:52:24
+# Project created by QtCreator 2018-03-07T02:18:16
 #
 #-------------------------------------------------
 
@@ -25,10 +25,16 @@ DEFINES += QT_DEPRECATED_WARNINGS
 
 SOURCES += \
         main.cpp \
-        mainwindow.cpp
+        gui.cpp \
+    recruitmentscene.cpp
 
 HEADERS += \
-        mainwindow.h
+        gui.h \
+    recruitmentscene.h
 
 FORMS += \
-        mainwindow.ui
+        gui.ui \
+    recruitmentscene.ui
+
+RESOURCES += \
+    gui.qrc

+ 54 - 0
gui.cpp

@@ -0,0 +1,54 @@
+#include "gui.h"
+#include "ui_gui.h"
+#include "recruitmentscene.h"
+#include <QDebug>
+
+GUI::GUI(QWidget *parent) :
+    QMainWindow(parent, Qt::Window | Qt::FramelessWindowHint),
+    ui_(new Ui::GUI), dx_(0), dy_(0)
+{
+    ui_->setupUi(this);
+    rq_scene_ = new RecruitmentScene(ui_->main_content_);   /// Инициализируем графическую сцену
+    rq_scene_->show();
+    //rq_scene_->hide();
+}
+
+GUI::~GUI()
+{
+    delete ui_;
+}
+
+void GUI::mouseMoveEvent( QMouseEvent* e ) {
+    if( e->buttons() | Qt::LeftButton ) {
+        QPoint pt=mapFromGlobal(QCursor::pos());
+        QWidget* child=childAt(pt);
+        if (child == 0) {
+            setGeometry(pos().x() + ( e->x() - dx_ ), pos().y() + ( e->y() - dy_ ), width(), height());
+            return;
+        }
+        QString cname = child->metaObject()->className();
+        qDebug() << cname;
+        if (cname != "QPushButton" && cname != "QComboBox"){ // отключаем перетягивание при наведение на активные элементы
+            setGeometry(pos().x() + ( e->x() - dx_ ), pos().y() + ( e->y() - dy_ ), width(), height());
+        } else {
+            dx_ = e->x();
+            dy_ = e->y();
+        }
+    }
+}
+
+void GUI::mousePressEvent( QMouseEvent* e ) {
+    if( e->button() == Qt::LeftButton ) {
+        dx_ = e->x();
+        dy_ = e->y();
+        setCursor( Qt::OpenHandCursor );
+    }
+}
+
+void GUI::mouseReleaseEvent( QMouseEvent* e ) {
+    if( e->button() == Qt::LeftButton ) {
+        setCursor( Qt::ArrowCursor );
+        dx_ = e->x();
+        dy_ = e->y();
+    }
+}

+ 44 - 0
gui.h

@@ -0,0 +1,44 @@
+#ifndef GUI_H
+#define GUI_H
+
+#include <QMainWindow>
+#include <QGraphicsScene>
+#include <QMouseEvent>
+#include "recruitmentscene.h"
+
+namespace Ui {
+class GUI;
+}
+
+class GUI : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit GUI(QWidget *parent = 0);
+    ~GUI();
+
+private:
+    Ui::GUI *ui_;
+    QGraphicsScene *scene_;
+    RecruitmentScene *rq_scene_;
+
+    QImage left_border_;
+    QImage left_up_corner_;
+    QImage up_border_;
+    QImage up_right_corner_;
+    QImage right_border_;
+    QImage right_bottom_corner_;
+    QImage bottom_border_;
+    QImage bottom_left_corner_;
+
+protected:
+    void mouseMoveEvent( QMouseEvent* e );
+    void mousePressEvent( QMouseEvent* e );
+    void mouseReleaseEvent( QMouseEvent* e );
+private:
+    int dx_;
+    int dy_;
+};
+
+#endif // GUI_H

+ 13 - 0
gui.qrc

@@ -0,0 +1,13 @@
+<RCC>
+    <qresource prefix="/">
+        <file>assets/window/thick_opaque-background.png</file>
+        <file>assets/window/thick_opaque-border-botleft.png</file>
+        <file>assets/window/thick_opaque-border-botright.png</file>
+        <file>assets/window/thick_opaque-border-bottom.png</file>
+        <file>assets/window/thick_opaque-border-left.png</file>
+        <file>assets/window/thick_opaque-border-right.png</file>
+        <file>assets/window/thick_opaque-border-top.png</file>
+        <file>assets/window/thick_opaque-border-topleft.png</file>
+        <file>assets/window/thick_opaque-border-topright.png</file>
+    </qresource>
+</RCC>

+ 156 - 0
gui.ui

@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>GUI</class>
+ <widget class="QMainWindow" name="GUI">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1024</width>
+    <height>800</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>GUI</string>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <widget class="QLabel" name="botleft_corner_">
+    <property name="geometry">
+     <rect>
+      <x>-3</x>
+      <y>758</y>
+      <width>45</width>
+      <height>45</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/assets/window/thick_opaque-border-botleft.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="left_border_">
+    <property name="geometry">
+     <rect>
+      <x>-3</x>
+      <y>42</y>
+      <width>51</width>
+      <height>716</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head&gt;&lt;body&gt;
+&lt;div style=&quot;background:url(:/assets/window/thick_opaque-border-left.png);&quot; width=&quot;100%&quot; height=&quot;100%&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;
+&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="topleft_corner_">
+    <property name="geometry">
+     <rect>
+      <x>-3</x>
+      <y>-3</y>
+      <width>45</width>
+      <height>45</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/assets/window/thick_opaque-border-topleft.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="top_border_">
+    <property name="geometry">
+     <rect>
+      <x>42</x>
+      <y>-3</y>
+      <width>937</width>
+      <height>45</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;div style=&quot;background:url(:/assets/window/thick_opaque-border-top.png);&quot; width=&quot;100%&quot; height=&quot;100%&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="topright_corner_">
+    <property name="geometry">
+     <rect>
+      <x>979</x>
+      <y>-3</y>
+      <width>45</width>
+      <height>45</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/assets/window/thick_opaque-border-topright.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="right_border_">
+    <property name="geometry">
+     <rect>
+      <x>979</x>
+      <y>42</y>
+      <width>45</width>
+      <height>716</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head&gt;&lt;body&gt;
+&lt;div style=&quot;background:url(:/assets/window/thick_opaque-border-right.png);&quot; width=&quot;100%&quot; height=&quot;100%&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;
+&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="bottom_border_">
+    <property name="geometry">
+     <rect>
+      <x>42</x>
+      <y>758</y>
+      <width>937</width>
+      <height>45</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;div style=&quot;background:url(:/assets/window/thick_opaque-border-bottom.png);&quot; width=&quot;100%&quot; height=&quot;100%&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="botright_corner">
+    <property name="geometry">
+     <rect>
+      <x>979</x>
+      <y>758</y>
+      <width>45</width>
+      <height>45</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/assets/window/thick_opaque-border-botright.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="background">
+    <property name="geometry">
+     <rect>
+      <x>42</x>
+      <y>42</y>
+      <width>938</width>
+      <height>716</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>&lt;html&gt;&lt;head&gt;&lt;body&gt;
+&lt;div style=&quot;background:url(:/assets/window/thick_opaque-background.png);&quot; width=&quot;100%&quot; height=&quot;100%&quot; /&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;
+&lt;/body&gt;&lt;/html&gt;</string>
+    </property>
+   </widget>
+   <widget class="QWidget" name="main_content_" native="true">
+    <property name="geometry">
+     <rect>
+      <x>40</x>
+      <y>40</y>
+      <width>941</width>
+      <height>721</height>
+     </rect>
+    </property>
+    <layout class="QGridLayout" name="content_"/>
+   </widget>
+  </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>

+ 3 - 3
main.cpp

@@ -1,11 +1,11 @@
-#include "mainwindow.h"
+#include "gui.h"
+#include "recruitmentscene.h"
 #include <QApplication>
 
 int main(int argc, char *argv[])
 {
     QApplication a(argc, argv);
-    MainWindow w;
+    GUI w;
     w.show();
-
     return a.exec();
 }

+ 0 - 14
mainwindow.cpp

@@ -1,14 +0,0 @@
-#include "mainwindow.h"
-#include "ui_mainwindow.h"
-
-MainWindow::MainWindow(QWidget *parent) :
-    QMainWindow(parent),
-    ui(new Ui::MainWindow)
-{
-    ui->setupUi(this);
-}
-
-MainWindow::~MainWindow()
-{
-    delete ui;
-}

+ 0 - 22
mainwindow.h

@@ -1,22 +0,0 @@
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QMainWindow>
-
-namespace Ui {
-class MainWindow;
-}
-
-class MainWindow : public QMainWindow
-{
-    Q_OBJECT
-
-public:
-    explicit MainWindow(QWidget *parent = 0);
-    ~MainWindow();
-
-private:
-    Ui::MainWindow *ui;
-};
-
-#endif // MAINWINDOW_H

+ 0 - 24
mainwindow.ui

@@ -1,24 +0,0 @@
-<ui version="4.0">
- <class>MainWindow</class>
- <widget class="QMainWindow" name="MainWindow" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>400</width>
-    <height>300</height>
-   </rect>
-  </property>
-  <property name="windowTitle" >
-   <string>MainWindow</string>
-  </property>
-  <widget class="QMenuBar" name="menuBar" />
-  <widget class="QToolBar" name="mainToolBar" />
-  <widget class="QWidget" name="centralWidget" />
-  <widget class="QStatusBar" name="statusBar" />
- </widget>
- <layoutDefault spacing="6" margin="11" />
- <pixmapfunction></pixmapfunction>
- <resources/>
- <connections/>
-</ui>

+ 14 - 0
recruitmentscene.cpp

@@ -0,0 +1,14 @@
+#include "recruitmentscene.h"
+#include "ui_recruitmentscene.h"
+
+RecruitmentScene::RecruitmentScene(QWidget *parent) :
+    QWidget(parent),
+    ui(new Ui::RecruitmentScene)
+{
+    ui->setupUi(this);
+}
+
+RecruitmentScene::~RecruitmentScene()
+{
+    delete ui;
+}

+ 22 - 0
recruitmentscene.h

@@ -0,0 +1,22 @@
+#ifndef RECRUITMENTSCENE_H
+#define RECRUITMENTSCENE_H
+
+#include <QWidget>
+
+namespace Ui {
+class RecruitmentScene;
+}
+
+class RecruitmentScene : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit RecruitmentScene(QWidget *parent = 0);
+    ~RecruitmentScene();
+
+private:
+    Ui::RecruitmentScene *ui;
+};
+
+#endif // RECRUITMENTSCENE_H

+ 61 - 0
recruitmentscene.ui

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>RecruitmentScene</class>
+ <widget class="QWidget" name="RecruitmentScene">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1024</width>
+    <height>800</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <widget class="QPushButton" name="pushButton">
+   <property name="geometry">
+    <rect>
+     <x>250</x>
+     <y>40</y>
+     <width>211</width>
+     <height>151</height>
+    </rect>
+   </property>
+   <property name="cursor">
+    <cursorShape>PointingHandCursor</cursorShape>
+   </property>
+   <property name="text">
+    <string>PushButton</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>460</x>
+     <y>10</y>
+     <width>111</width>
+     <height>31</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600; color:#fff560;&quot;&gt;Выберите расу:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="pushButton_2">
+   <property name="geometry">
+    <rect>
+     <x>520</x>
+     <y>40</y>
+     <width>211</width>
+     <height>151</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>PushButton</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>