t
tetta8 мая 2017 г. 16: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 г. 16:35

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

    Evgenii Legotckoi
    • 9 мая 2017 г. 9:53

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

      Комментарии

      Только авторизованные пользователи могут публиковать комментарии.
      Пожалуйста, авторизуйтесь или зарегистрируйтесь
      Ua

      Qt - Тест 001. Сигналы и слоты

      • Результат:84баллов,
      • Очки рейтинга4
      Ua

      Qt - Тест 001. Сигналы и слоты

      • Результат:42баллов,
      • Очки рейтинга-8
      ОК

      Qt - Тест 001. Сигналы и слоты

      • Результат:47баллов,
      • Очки рейтинга-6
      Последние комментарии
      ИМ
      Игорь Максимов22 ноября 2024 г. 21:51
      Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
      Evgenii Legotckoi
      Evgenii Legotckoi31 октября 2024 г. 23:37
      Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
      A
      ALO1ZE19 октября 2024 г. 17:19
      Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
      ИМ
      Игорь Максимов5 октября 2024 г. 16:51
      Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
      d
      dblas55 июля 2024 г. 20:02
      QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
      Сейчас обсуждают на форуме
      f
      firstlunoxod15 февраля 2025 г. 13:46
      Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
      Дмитрий
      Дмитрий3 февраля 2025 г. 16:24
      Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
      NW
      Nayo Wai30 января 2025 г. 19:22
      не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
      n
      nkly3 января 2025 г. 12:52
      Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
      M
      Marsel17 августа 2023 г. 0:26
      OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

      Следите за нами в социальных сетях