#include #include #include #include #include #include #include class FrameLessWidget : public QWidget { public: FrameLessWidget(QWidget* parent = 0) : QWidget(parent) , value(0) { // Part 1 setWindowFlags(windowFlags() | Qt::FramelessWindowHint); setupUi(this); downButton->setText("Down"); upButton->setText("Up"); label->setText("---"); exitButton->setText("Exit"); connect(upButton, &QPushButton::clicked, this, &FrameLessWidget::increase); connect(downButton, &QPushButton::clicked, this, &FrameLessWidget::decrease); connect(exitButton, &QPushButton::clicked, []() { qApp->exit(); }); } void setupUi(QWidget* parent) { parent->resize(400, 300); QVBoxLayout* verticalLayout = new QVBoxLayout(parent); // Part 2 verticalLayout->setContentsMargins(0, 0, 0, 0); // Don't work! no PaintEvents? //verticalLayout->setContentsMargins(1, 0, 0, 0); // works! QWidget* widget = new QWidget(parent); QGridLayout* gridLayout = new QGridLayout(widget); downButton = new QPushButton(widget); gridLayout->addWidget(downButton, 1, 1, 1, 1); label = new QLabel(widget); gridLayout->addWidget(label, 0, 0, 1, 1); upButton = new QPushButton(widget); gridLayout->addWidget(upButton, 0, 1, 1, 1); exitButton = new QPushButton(widget); gridLayout->addWidget(exitButton, 2, 1, 1, 1); verticalLayout->addWidget(widget); } void decrease() { value++; label->setText(QString::number(value)); } void increase() { value--; label->setText(QString::number(value)); } private: QPushButton* downButton; QPushButton* upButton; QLabel* label; QPushButton* exitButton; int value; }; int main(int argc, char* argv[]) { QApplication a(argc, argv); // Part 3 a.setAttribute(Qt::AA_NativeWindows); FrameLessWidget w; w.show(); return a.exec(); }