t
tettaMay 8, 2017, 6:34 a.m.

Перенос окна

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

#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;
}
(Знаю, что громадный)
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

2
t
  • May 8, 2017, 6:35 a.m.

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

    Evgenii Legotckoi
    • May 8, 2017, 11:53 p.m.

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

      Comments

      Only authorized users can post comments.
      Please, Log in or Sign up
      AD

      C ++ - Test 004. Pointers, Arrays and Loops

      • Result:50points,
      • Rating points-4
      m

      C ++ - Test 004. Pointers, Arrays and Loops

      • Result:80points,
      • Rating points4
      m

      C ++ - Test 004. Pointers, Arrays and Loops

      • Result:20points,
      • Rating points-10
      Last comments
      Evgenii Legotckoi
      Evgenii LegotckoiNov. 1, 2024, 12:37 a.m.
      Django - Lesson 064. How to write a Python Markdown extension Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
      A
      ALO1ZEOct. 19, 2024, 6:19 p.m.
      Fb3 file reader on Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
      ИМ
      Игорь МаксимовOct. 5, 2024, 5:51 p.m.
      Django - Lesson 064. How to write a Python Markdown extension Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
      d
      dblas5July 5, 2024, 9:02 p.m.
      QML - Lesson 016. SQLite database and the working with it in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
      k
      kmssrFeb. 9, 2024, 5:43 a.m.
      Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
      Now discuss on the forum
      Evgenii Legotckoi
      Evgenii LegotckoiJune 25, 2024, 1:11 a.m.
      добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
      t
      tonypeachey1Nov. 15, 2024, 5:04 p.m.
      google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
      NSProject
      NSProjectJune 4, 2022, 1:49 p.m.
      Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
      9
      9AnonimOct. 25, 2024, 7:10 p.m.
      Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

      Follow us in social networks