```
    Qt :: WindowFlags flags = 0;

    // Makes the Pomodoro stay on the top of all windows.
    flags |= Qt :: WindowStaysOnTopHint;

    // Removes minimize, maximize, and close buttons.
    flags |= Qt :: WindowTitleHint | Qt :: CustomizeWindowHint;

    window->setWindowFlags (flags);
    window->setWindowTitle ("Failing to plan is planning to fail");

```

This removes minimize, maximize, and close buttons. The default menu on the left is still there. How to get rid of that?

I want the title bar to be there, but just want the menu to be removed.

Default menu contains: Minimize, Maximize, Move etc options.

EDIT 1:
-------

timer.cpp

```
#include <QApplication>
#include <QMainWindow>
#include "timer.h"

#include <QPushButton>
#include <QListWidget>
#include <QtGui>
#include <QTreeWidget>
int main(int argc, char *argv[])
{
    QApplication    app (argc, argv);

    // The window on which we will place the timer.
    QMainWindow *window           = new QMainWindow();
    QWidget           *centralWidget = new QWidget (window);

    /* Button widget */
    // Displays a button on the main window.
    QPushButton   *startButton     = new QPushButton("Start", window);
    // Setting the size of the button widget.
    startButton->setFixedSize (245, 25);

    /* Text box */
    // Displays a time interval list on the main window.
    QListWidget *timeIntervalList = new QListWidget (window);
    timeIntervalList->setFixedSize (30, 145);

    QStringList timeIntervals;
    timeIntervals << "1" << "20" << "30" << "40";
    timeIntervalList->addItems (timeIntervals);

    /* LCD widget */
    // Start Counting down from 25 minutes
    lcdDisplay *objLcdDisplay = new lcdDisplay (centralWidget);
    // Setting the size of the LCD widget.
    objLcdDisplay->setFixedSize (245, 140);

    // The clicked time interval should be returned from the list to the timer.
    QObject :: connect (timeIntervalList, SIGNAL (itemClicked (QListWidgetItem *)), objLcdDisplay, SLOT (receiveTimeInterval (QListWidgetItem *)));

    // The timer should start and emit signals when the start button is clicked.
    QObject :: connect (startButton, SIGNAL (clicked ()), objLcdDisplay, SLOT (setTimerConnect ()));

    *************************************************************************
    Qt :: WindowFlags flags = 0;
    // Makes the Pomodoro stay on the top of all windows.
    flags |= Qt :: Window | Qt :: WindowStaysOnTopHint;
    // Removes minimize, maximize, and close buttons.
    flags |= Qt :: WindowTitleHint | Qt :: CustomizeWindowHint;
    window->setWindowFlags (flags);
    *************************************************************************
    window->setWindowTitle   ("Failing to plan is planning to fail");

    QGridLayout *layout = new QGridLayout();
    centralWidget->setLayout(layout);

    //Add Items to QGridLayout Here 
    //Row and Column counts are set Automatically
    layout->addWidget (objLcdDisplay, 0, 1);
    layout->addWidget (startButton, 1, 1);
    layout->addWidget (timeIntervalList, 0, 0);

    window->setCentralWidget (centralWidget);
    window->show();

    return app.exec();
}

```

Timer.h

```
#ifndef  LCDNUMBER_H
#define LCDNUMBER_H

#include <QLCDNumber>
#include <QTimer>
#include <QTime>
#include <QListWidget>
#include <QMessageBox>
#include <iostream>

class lcdDisplay : public QLCDNumber
{
    Q_OBJECT  

    public:
        // The QTimer class provides repetitive and single-shot timers.
        QTimer* objTimer;
        // The QTime class provides clock time functions.
        QTime*  objTime;

    public:
        lcdDisplay (QWidget *parentWidget)
        {
            objTimer = new QTimer ();
            // Setting our own time with the specified hours, minutes, and seconds.
            objTime  = new QTime  (0, 0, 0);

            setParent (parentWidget);
        };

        ~ lcdDisplay () {};

    public slots:
        // This slot is called after the timer timeouts (1 second).
        void setDisplay ()
        {
            // TODO
            objTime->setHMS (0, objTime->addSecs (-1).minute (), objTime->addSecs (-1).second ());
            display (objTime->toString ());

            if ((objTime->minute () == 0) && (objTime->second () == 0)) 
            {
                objTimer->stop ();
                QMessageBox msgBox;
                msgBox.setWindowTitle ("Pomodoro");
                msgBox.setText ("Time's up.");
                msgBox.setWindowModality(Qt::ApplicationModal);
                msgBox.exec();
            }
        };

        void receiveTimeInterval (QListWidgetItem *item)
        {
            QString h = item->text();
            objTime->setHMS (0, h.toUInt(), 0);
        }

        void setTimerConnect ()
        {
            // connect (objectA, signalAFromObjectA, objectB, slotAFromObjectB)
            // timeout (): This signal is emitted when the timer times out. The time out period can be specified with `start (int milliseconds)` function.
            QObject :: connect (objTimer, SIGNAL (timeout ()), this, SLOT (setDisplay ()));

            // 1 second has 1000 milliseconds.
            // start (int milliseconds): Starts the timer with a timeout interval of specified milliseconds. this means that after 1 second the timer will emit a signal. TODO placement
            objTimer->start (1000);
        }
};
#endif

```
['https://Stackoverflow.com/questions/9293124', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/462608/']
This is working for me:

```
Qt::Window | Qt::WindowTitleHint | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint

```

![Screen shot](https://i.stack.imgur.com/zCRxF.png)

Sometimes you have to specify these in the constructor of the window for them to take effect. If you assign them later (`setWindowFlags`), some of the settings may not apply.
Try to start by setting Qt::Dialog

```
setWindowFlags(Qt::Dialog | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowStaysOnTopHint);

```