DMainWindow demo
main.cpp
DApplication *a = DApplication::globalApplication(argc, argv);
DApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true);
MainWindow w;
w.show();
Dtk::Widget::moveToCenter(&w);
mainwindow.h
#include "DMainWindow"
#include "dtkwidget_global.h"
DWIDGET_USE_NAMESPACE
class MainWindow : public DMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
};
mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: DMainWindow(parent)
{
DTitlebar *titlebar = this->titlebar();
if (titlebar) {
titlebar->setIcon(QIcon(":/images/logo_icon.svg"));
titlebar->setMenu(new QMenu(titlebar));
titlebar->setSeparatorVisible(true);
titlebar->menu()->addAction("dfm-settings");
titlebar->menu()->addAction("dt-settings");
titlebar->menu()->addAction("testPrinter");
QMenu *menu = titlebar->menu()->addMenu("sub-menu");
connect(menu->addAction("show full screen"), &QAction::triggered, this, [this]() {
this->isFullScreen() ? this->showNormal() : this->showFullScreen();
if (QAction *action = qobject_cast<QAction *>(sender())) {
action->setText(this->isFullScreen() ? "show normal window" : "show full screen");
}
});
connect(menu->addAction("ddialog"), &QAction::triggered, this, []() {
DDialog dlg("this is title", "this is message text......");
dlg.addButton("ok", true, DDialog::ButtonWarning);
dlg.setIcon(QIcon::fromTheme("dialog-information"));
dlg.exec();
});
connect(titlebar->menu(), &QMenu::triggered, this, &MainWindow::menuItemInvoked);
titlebar->setDisableFlags(Qt::WindowMinimizeButtonHint
| Qt::WindowMaximizeButtonHint
| Qt::WindowSystemMenuHint);
titlebar->setAutoHideOnFullscreen(true);
}
DButtonBox *buttonBox = new DButtonBox(titlebar);
buttonBox->setFixedWidth(220);
buttonBox->setButtonList({new DButtonBoxButton("浅色模式"), new DButtonBoxButton("深色模式")}, true);
buttonBox->setId(buttonBox->buttonList().at(0), 0);
buttonBox->setId(buttonBox->buttonList().at(1), 1);
titlebar->addWidget(buttonBox);
}