1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/PyZhiChan-Qt-Frameless-Window-DarkStyle

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Qt Frameless Window с DarkStyle

Простая реализация класса MainWindow с окном без рамки и пользовательским тёмным стилем. Также добавлена поддержка строки заголовка и кнопок (минимизировать, развернуть, закрыть).

Внешний вид основан на окне приложения VS2013 (плоское окно без рамки).

Скриншоты
mac включён mac выключен

Qt и ОС

  • Протестировано с Qt5.5.0, Qt5.9.0 и Qt5.10.0.
  • Протестировано на Windows 7, Windows 10, MacOSX 10.12.5 и MacOS 10.13.2.

PyQt5

Здесь представлен неофициальный порт Python моей реализации.

Как использовать

  • Добавьте дополнительный путь включения в framelesswindow.
  • Добавьте ресурсы framelesswindow.qrc и darkstyle.qrc.
  • Включите строку #include "framelesswindow.h" в main.cpp, создайте окно FramelessWindow framelessWindow; и назначьте свой объект mainwindow как содержимое framelessWindow.setContent(mainWindow); и покажите его framelessWindow.show();
  • Добавьте строку #include "DarkStyle.h" в main.cpp и вызовите a.setStyle(new DarkStyle);
#include <QApplication>
#include "DarkStyle.h"
#include "framelesswindow.h"
#include "mainwindow.h"

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);

  // стиль нашего приложения с помощью пользовательского тёмного стиля
  a.setStyle(new DarkStyle);

  // создаём окно без рамки (и устанавливаем состояние окна или заголовок)
  FramelessWindow framelessWindow;
  //framelessWindow.setWindowState(Qt::WindowMaximized);
  //framelessWindow.setWindowTitle("test title");
  //framelessWindow.setWindowIcon(a.style()->standardIcon(QStyle::SP_DesktopIcon));
  
  // создаем экземпляр нашего mainwindow
  MainWindow *mainWindow = new MainWindow;

  // добавляем mainwindow в наше пользовательское окно без рамок
  framelessWindow.setContent(mainWindow);
  framelessWindow.show();

  return a.exec();
}

Особенности

  • Окно без рамки.
  • Пользовательский тёмный стиль (на основе стиля Fusion с тёмной палитрой и пользовательскими таблицами стилей).
  • Строка заголовка.
  • Кнопки (свернуть | восстановить | развернуть | закрыть).
  • Перемещение окна путём перетаскивания строки заголовка.
  • Двойной щелчок по строке заголовка для переключения между состояниями окна (развёрнутое и нормальное).
  • Использование собственных событий, таких как сворачивание или системное меню.

Задачи

Благодарности

Большое спасибо Qt Forum и особенно Крису Каве за то, что он указал мне на некоторые типичные проблемы и намекнул на отличные функции, которые должны быть реализованы.

Лицензия

The MIT License

Copyright (c) 2018, Юрген Скротцки (https://github.com/Jorgen-VikingGod, JorgenVikingGod@gmail.com)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the «Software»), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ГАРАНТИИ ТОВАРНОГО КАЧЕСТВА, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННЫХ ЦЕЛЕЙ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, ВОЗНИКАЮЩИЕ В РЕЗУЛЬТАТЕ ДЕЙСТВИЙ ПО КОНТРАКТУ, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, СВЯЗАННЫЕ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ СДЕЛКАМИ В ОТНОШЕНИИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

simple MainWindow class implementation with frameless window and custom dark style. It adds also support for titlebar and buttons (minimize, maximize, close) Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/PyZhiChan-Qt-Frameless-Window-DarkStyle.git
git@api.gitlife.ru:oschina-mirror/PyZhiChan-Qt-Frameless-Window-DarkStyle.git
oschina-mirror
PyZhiChan-Qt-Frameless-Window-DarkStyle
PyZhiChan-Qt-Frameless-Window-DarkStyle
master