界面靠拖动也可以,自绘也可以,设置无标题效果,标题栏必须是自绘的。qt界面有三种widget、dialog、mainwindow,思路基本一致,
1.自绘界面要设置标题栏隐藏
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); setAttribute(Qt::WA_TranslucentBackground);
2.设置窗体大小
this->setFixedSize(850,600);
3.widget和dialog基本实现一致,mainwindow本身已经有界面布局,稍微有些差别
先说不太一样的,因为,mainwindow是由centralwidget和menubar和statusbar组成,组件、布局只可以在centralwidget内布置
centerWindow = new QWidget; centerWindow->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); centerWindow->setObjectName(tr("centerWindow"));
this->setCentralWidget(centerWindow);
4.新建mainLayout(垂直布局),titleLayout,toolLayout,contentLayout,statusLayout,都是水平布局,每个布局添加好自己的组件,然后mainLayout布局把所有布局添加进来(addLayout),最后centerWindow把主布局添加 进来,centerWindow->setLayout(mainLayout);
最终代码大概是这样的:
titleLayout->addWidget(minButton);
...
mainLayout = new QVBoxLayout();
mainLayout->addLayout(titleLayout);
mainLayout->addLayout(toolLayout);
mainLayout->addLayout(contentLayout);
mainLayout->addStretch();
mainLayout->addLayout(status_layout);
mainLayout->setSpacing(0);
mainLayout->setContentsMargins(0, 0, 0, 0);
centerWindow->setLayout(mainLayout);