t
tettaМамыр 8, 2017, 6:34 Т.Ж.

Перенос окна

Вот по этой статье я пытался сделать так , что бы окно пересувалось, но у меня выдает дофига ошибок, помогите, что куда вписывать. Вот код заголовочного файла:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QPoint>
#include <QMainWindow>
#include <QMessageBox>
#include <QAction>
#include <QToolBar>
#include <QToolButton>
#include <QDockWidget>
#include <QLayout>
#include <QMdiArea>
#include <QMouseEvent>
#include <QStandardItemModel>
#include <QWidget>

#include "stylehelper.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT


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


//slots for menuBar
private slots:
    void s_file(){
        QMessageBox msg;
            msg.setText("Action");
            msg.exec();
    }
    void exit(){
        close();
    }
    void f_fsm(){
        if(this->isMaximized()){
         this->showFullScreen();
        }else{
            this->showMaximized();
        }
    }
    void about(){
        QMessageBox msg;
            msg.setText("I say about this programe now!");
            msg.exec();
    }


private:
    Ui::MainWindow *ui;

    //for toolBar(Add more toolBar)

     //oToolBar
      QToolBar *oToolBar;
      QToolButton *oToolButton;
     //tToolBar
      QToolBar *tToolBar;
      QToolButton *tToolButton;

    //mouse position

};

#endif // MAINWINDOW_H
А это реализация:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QStyle>
#include <QtWidgets>
#include <QToolBar>
#include <QMenuBar>
#include <QAction>
#include <QtGui>
#include <QLineEdit>
#include <QLabel>
#include <QWidget>
#include <QTabBar>
#include <QPushButton>
#include <QMainWindow>
#include <QToolBar>
#include <QToolButton>
#include <QIcon>
#include <QDockWidget>
#include <QLayout>
#include <QStyle>
#include <QStyleHints>
#include <QGridLayout>
#include <QFileDialog>
#include <QDir>
#include <QGraphicsDropShadowEffect>
#include <QSizePolicy>
#include <QSpacerItem>
#include <QComboBox>

#include "stylehelper.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);


    //setting UI
      this->setWindowFlags(Qt::FramelessWindowHint);
      this->setStyleSheet(StyleHelper::getWindowStyleSheet());

   //
    QGridLayout *qgl = new QGridLayout(this);

    //close, maximize, minimize
      //close
       QPushButton *cls = new QPushButton(this);
       connect(cls, &QPushButton::clicked, this, &QWidget::close);
       cls->setStyleSheet(StyleHelper::getClsStyleSheet());
       cls->setGeometry(cls->geometry().x() + 1000 ,cls->geometry().y() + 90, cls->width() - 53, cls->height() - 9);
       cls->setIcon(QIcon("url(/icon/project.png)"));
       qgl->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding), 30, 0, 1, 2);
       qgl->addWidget(cls, 1, 0);
       qgl->addItem(new QSpacerItem(20, 40, QSizePolicy::Expanding, QSizePolicy::Minimum), 10, 10);


       ui->btn_close->setStyleSheet(StyleHelper::getCloseStyleSheet());
      //maximize
       ui->btn_maximize->setStyleSheet(StyleHelper::getMaximizeStyleSheet());
      //minimize
       ui->btn_minimize->setStyleSheet(StyleHelper::getMinimizeStyleSheet());

    //connect close, maximize, minimize
       connect(ui->btn_minimize, &QToolButton::clicked, this, &QWidget::showMinimized);
       connect(ui->btn_maximize, &QToolButton::clicked, [this](){
        if (this->isMaximized()) {
           ui->btn_maximize->setStyleSheet(StyleHelper::getMaximizeStyleSheet());
            this->layout()->setMargin(9);
            this->showNormal();
        } else {
           ui->btn_maximize->setStyleSheet(StyleHelper::getRestoreStyleSheet());
            this->layout()->setMargin(0);
            this->showMaximized();
        }
       });
       connect(ui->btn_close, &QToolButton::clicked, this, &QWidget::close);

   //menuBar(Add more buttons)
    menuBar()->setStyleSheet(StyleHelper::getQMenuStyleSheet());

    //file
     QToolButton *fileF = new QToolButton();
      QMenu *file = menuBar()->addMenu(tr("File"));
      file->setStyleSheet(StyleHelper::getMenuBarStyleSheet());

       //new
        QAction *newFile = new QAction (tr("New"),this);
         newFile->setShortcut(QKeySequence::New);
         connect(newFile,SIGNAL(triggered()),this,SLOT(s_file()));
          file->addAction(newFile);

       //open
        QAction *openFile = new QAction (tr("Open"),this);
         openFile->setShortcut(QKeySequence::Open);

          file->addAction(openFile);

       //open as
         QAction *openAsFile = new QAction (tr("Open as"),this);

           file->addAction(openAsFile);

       //the last document
         QAction *lastFile = new QAction (tr("The last document"),this);

            file->addAction(lastFile);

       file->addSeparator();

       //save
         QAction *saveFile = new QAction (tr("Save"),this);
           saveFile->setShortcut(QKeySequence::Save);

            file->addAction(saveFile);

       //save as
         QAction *saveAsFile = new QAction (tr("Save as"),this);
           saveAsFile->setShortcut(QKeySequence::SaveAs);

            file->addAction(saveAsFile);

       //save all
         QAction *saveAllFile = new QAction (tr("Save all"),this);
            saveAllFile->setShortcut(Qt::CTRL + Qt::SHIFT + Qt::Key_S);

             file->addAction(saveAllFile);

       file->addSeparator();

       //exit
         QAction *exitFile = new QAction (tr("Exit"),this);
             exitFile->setShortcut(Qt::CTRL+Qt::Key_Q);
             connect(exitFile,SIGNAL(triggered()),this,SLOT(exit()));
              file->addAction(exitFile);


       fileF->setMenu(file);
    //edit
      QToolButton *editF = new QToolButton();
      QMenu *edit = menuBar()->addMenu(tr("&Edit"));
      edit->setStyleSheet(StyleHelper::getMenuBarStyleSheet());

       //undo
         QAction *undoFile = new QAction (tr("Undo"),this);
              undoFile->setShortcut(Qt::CTRL+Qt::Key_Z);
               edit->addAction(undoFile);

       editF->setMenu(edit);
    //window
     //  QToolButton *windowF = new QToolButton(this);
       QMenu *window = menuBar()->addMenu(tr("&Window"));
       window->setStyleSheet(StyleHelper::getMenuBarStyleSheet());

       //full screen mode
         QAction *fsm = new QAction (tr("Full screen mode"),this);
              fsm->setShortcut(Qt::Key_F5);
              connect(fsm,SIGNAL(triggered()),this,SLOT(f_fsm()));
                window->addAction(fsm);

       windowF->setMenu(window);
    //reference
       QToolButton *referenceF = new QToolButton();
       QMenu *reference = menuBar()->addMenu(tr("&Reference"));
       reference->setStyleSheet(StyleHelper::getMenuBarStyleSheet());

      //About the program "Project"
         QAction *atp = new QAction (tr("About the program Project"),this);
               connect(atp,SIGNAL(triggered()),this,SLOT(about()));
                reference->addAction(atp);

          referenceF->setMenu(reference);
    //Header


       //toolBar(Add setting for toolBar)

         //oToolBar
          oToolBar = new QToolBar("First ToolBar");
          oToolButton = new QToolButton(this);
          oToolButton->setIcon(QIcon("../../Синий.jpg"));
          oToolBar->addWidget(oToolButton);
          oToolBar->setStyleSheet(StyleHelper::getToolBStyleSheet());
          addToolBar(oToolBar);


         //tToolBar
           tToolBar = new QToolBar("Second ToolBar");
           tToolButton = new QToolButton(this);
           tToolButton->setIcon(QIcon("../../Красный.jpg"));
           tToolBar->addWidget(tToolButton);
           tToolBar->setStyleSheet(StyleHelper::getToolBStyleSheet());
           addToolBar(tToolBar);


}

MainWindow::~MainWindow()
{
    delete ui;
}
(Знаю, что громадный)
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

2
t
  • Мамыр 8, 2017, 6:35 Т.Ж.

Вот по этой статье (Чет не прицепилось)

    Evgenii Legotckoi
    • Мамыр 8, 2017, 11:53 Т.Қ.

    Весь проект в таком случае прикреплять надо. Там до чёртиков включений посторонних файлов. Если бы всё что там было написано, было только в составе класса MainWindow, тогда лады, а так там StyleHelper, ресурсные файлы и т.д. А так, что Вам тут подсказывать? Какие ошибки выпадают Вы не привели. Скопипастить в свой проект и запустить компиляцию? А толку-то? Первое, на что сругается компилятор - это будет отсутствие заголовочного файла stylehelper.h, который явно не является причиной ваших ошибок. Удалять всё, что не включено? Опять же никакого толку. Ну удалю я лишнее, сделаю рабочий вариант класса, но у вас всё равно опыта не хватит, чтобы внедрить это к себе в проект.

      Пікірлер

      Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
      Кіріңіз немесе Тіркеліңіз
      OI
      • Ora Iro
      • Жел. 24, 2024, 6:38 Т.Ж.

      C++ - Тест 001. Первая программа и типы данных

      • Нәтиже:40ұпай,
      • Бағалау ұпайлары-8
      AD

      C++ - Тест 004. Указатели, Массивы и Циклы

      • Нәтиже:50ұпай,
      • Бағалау ұпайлары-4
      m
      • molni99
      • Қаз. 26, 2024, 1:37 Т.Ж.

      C++ - Тест 004. Указатели, Массивы и Циклы

      • Нәтиже:80ұпай,
      • Бағалау ұпайлары4
      Соңғы пікірлер
      ИМ
      Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
      Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      Evgenii Legotckoi
      Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
      Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
      A
      ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
      Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
      ИМ
      Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
      Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
      d
      dblas5Шілде 5, 2024, 11:02 Т.Ж.
      QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
      Енді форумда талқылаңыз
      Evgenii Legotckoi
      Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
      t
      tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
      google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
      NSProject
      NSProjectМаусым 4, 2022, 3:49 Т.Ж.
      Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
      9
      9AnonimҚаз. 25, 2024, 9:10 Т.Ж.
      Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

      Бізді әлеуметтік желілерде бақылаңыз