t
tetta24 апреля 2017 г. 23:38

Кнопки системного меню

qt

Как добить кнопки системного меню ? Простите, если такой вопрос уже был!

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

4
t
  • 24 апреля 2017 г. 23:38

И иконку слева сверху (Забыл)

    Evgenii Legotckoi
    • 25 апреля 2017 г. 0:19

    Не могли бы более подробно описывать вопрос? Серьёзно... Даже если вопрос повторится - это не особо принципиально. А вот скудно заданный вопрос заставляет порой гадать, что конкретно хотели спросить. Для меня системное меню - это то, которое выскакивает при нажатии кнопки ПУСК под Windows.

    А что вы подразумевали? Меню в menubar? Или контекстное меню? Что за иконка слева сверху? Иконка рядом с названием программы в заголовке окна? Вы убрали всё-таки заголовок и обрамление окна? или бросили это гиблое дело?

    В общем сформулируйте вопрос как следует.

      t
      • 25 апреля 2017 г. 0:22

      Извините. Хочу узнать, как сделать кнопки: "выходыт", "свернуть в окно и обратно", "свернуть". А также, как сделать иконку слева сверху.

        Evgenii Legotckoi
        • 25 апреля 2017 г. 0:39
        • Ответ был помечен как решение.

        Вообще эти кнопки точно не являются системным меню, да и к меню не имеют никакого отношения... (поэтому и нужно описывать вопрос как следует, чтобы не было разночтений). То есть обрамление окна вы всё-таки отключили?

        Пример, ссылку на который я вам раннее давал, имеет в своём составе кастомизированные кнопки закрытия приложения, сворачивания и максимизации приложения. Фактически я использовал там обычный кнопки QToolButton , которые поместил на QWidget . А также подключил к ним слоты для обработки необходимых действий. В данном случае они сделаны как лямбда-функции. Можете через графический дизайнер кинуть такие же кнопки в правый верхний угол окна и подключить слоты для обработки их нажатий. В том примере код для слотов выглядит следующим образом:

            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->showNormal();
                } else {
                    ui->btn_maximize->setStyleSheet(StyleHelper::getRestoreStyleSheet());
                    this->showMaximized();
                }
            });
            // Закрытие окна приложения
            connect(ui->btn_close, &QToolButton::clicked, this, &QWidget::close);

        Что касается класса StyleHelper, то там используются статические методы, которые возвращают описание стиля в виде QSS стилей (аналогично CSS для веба)

        Стиль QSS описывает, как выглядит кнопка внешне и какая будет установлена в неё иконка.

        QString StyleHelper::getCloseStyleSheet()
        {
            return "QToolButton { "
                   "image: url(:/buttons/close-orange.png);"
                   "background-color: #292929; "
                   "icon-size: 12px;"
                   "padding-left: 10px;"
                   "padding-right: 10px;"
                   "padding-top: 5px;"
                   "padding-bottom: 5px;"
                   "border: 1px solid #292929; "
                   "}"
                   "QToolButton:hover {"
                   "image: url(:/buttons/close.png); "
                   "}"
                   "QToolButton:pressed { "
                   "image: url(:/buttons/close.png);"
                   "background-color: #de8e37; "
                   "}";
        }

        Что касается иконки, то можно взять обычный QLabel и установить в него картинку.

        QLabel *label = new QLabel(this);
        QPixmap pix(":/images/iconka.png");
        label->setPixmap(pix);

        Картинку нужно добавить в проект в качестве ресурса. То есть она должна учитываться в ресурсном файле.

        Так же в том уроке есть ссылка на скачивание проекта в конце статьи. Скачайте и посмотрите как сделан проект в дизайнере.

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь
          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 Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

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