• 首页
  • Qt文档
  • DTK文档
  • 玲珑文档
  • 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);
    }