windows 创建dde 风格的无边框窗体

 

DBorderlessWidget 是dtk提供一个无边框带阴影的窗体很方便的写出dde 风格的界面 代码量极少
#include "mainwindow.h"

#include <DApplication>
#include <DWidgetUtil>
DWIDGET_USE_NAMESPACE
int main(int argc, char *argv[])
{

#if defined(DTK_STATIC_LIB)
    DWIDGET_INIT_RESOURCE();//加载dtk 资源图片
#endif

        DApplication::loadDXcbPlugin();
        DApplication app(argc, argv);
        app.setAttribute(Qt::AA_UseHighDpiPixmaps);
        app.loadTranslator();
        app.setOrganizationName("deepin");
        app.setApplicationName("deepin-dtkdemo");
        app.setApplicationVersion(DApplication::buildVersion("1.0.1"));
        app.setApplicationAcknowledgementPage("https://www.deepin.org");
        app.setProductIcon(QIcon(":/img/1.png"));
        app.setProductName(DApplication::translate("MainWindow", "Deepin Calculator"));
        app.setApplicationDescription(DApplication::translate("MainWindow", "Deepin dtkdemo is a simple and easy to use windows desktop demo. "));

    MainWindow w;
    w.show();
    if (app.setSingleInstance("deepin-dtkdemo")) {
            Dtk::Widget::moveToCenter(&w);//程序移动到到中心
        }
    return app.exec();
}
#include "mainwindow.h"
#include<QPushButton>
#include<dpushbutton.h>
#include<QHBoxLayout>
#include <DWidgetUtil> //加入此头文件方可使用moveToCenter
#include <DTitlebar>
#include<DSearchEdit>
#include"bartab.h"
#include<DThemeManager>
#include<dtextbutton.h>


DWIDGET_USE_NAMESPACE
MainWindow::MainWindow(QWidget *parent)
    : DBorderlessWidget(parent)
{
    titlebar()->setIcon(QIcon(":/img/1.png"));

    QHBoxLayout *layout=new QHBoxLayout;
    DTextButton *darkButton = new DTextButton("Dark", this);
    DTextButton *lightBUtton = new DTextButton("Light", this);
    DPushButton *testdpushbutton=new DPushButton(":/img/1.png",":/img/2.png",":/img/3.png");
    testdpushbutton->setIconSize(QSize(80,80));
    testdpushbutton->setFixedSize(100,100);
    lightBUtton->setFixedSize(100,100);
    darkButton->setFixedSize(100,100);
    layout->addWidget(darkButton);
    layout->addWidget(lightBUtton);

    layout->addWidget(testdpushbutton);

    DThemeManager *themeManager = DThemeManager::instance();
    connect(darkButton, &QPushButton::clicked, [ = ] {
        themeManager->setTheme("dark");

    });
    connect(lightBUtton, &QPushButton::clicked, [ = ] {
        themeManager->setTheme("light");
    });


    BarTab * bar=new BarTab();
    layout->addWidget(bar);


    this->setLayout(layout);

    //在标题栏添加控件(其实可以把标题栏看成一个Widget,详细的说明请看文档) Add a control to the title bar (In fact, the title bar can be regarded as a Widget. Please refer to the document for detailed instructions.)
    //    DSearchEdit *searchEdit = new DSearchEdit;
    //    titlebar()->setCustomWidget(searchEdit,true);
    //    searchEdit->setFixedWidth(200);
    //    searchEdit->show();

    //在标题栏上添加一个菜单/菜单项 Add a menu/menu item to the title bar
    QMenu *menu=new QMenu;
    QAction *action=new QAction("action");
    menu->addAction(action);
    titlebar()->setMenu(menu);



    MainWindow::resize(630,500); //改变窗口大小应当改变MainWindow的大小
}

MainWindow::~MainWindow()
{

}


效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值