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()
{
}
效果图