我创建了一个this->setWindowFlags(Qt::FramelessWindowHint);
,因此没有标题栏。因此,我正在实施自己的。然而,在我继续之前,我想知道是否有一种标准的方法来以原生os的方式添加关闭,最小化和最大化按钮(即在Windows上它应该看起来像关闭窗口关闭按钮和osx相同和linux)。
答案 0 :(得分:6)
QStyle
根据操作系统风格采用了许多标准图标。您可以从当前的操作系统样式中获取此图标,然后由您自己绘制。
这是一个简单的实现供参考。
class TitleBar : public QWidget
{
Q_OBJECT
public:
explicit TitleBar(QWidget *parent = 0)
:QWidget(parent)
{
QStyle *style = qApp->style();
QIcon closeIcon = style->standardIcon(QStyle::SP_TitleBarCloseButton);
QIcon maxIcon = style->standardIcon(QStyle::SP_TitleBarMaxButton);
QIcon minIcon = style->standardIcon(QStyle::SP_TitleBarMinButton);
QPushButton *min = new QPushButton(this);
QPushButton *max = new QPushButton(this);
QPushButton *close = new QPushButton(this);
min->setIcon(minIcon);
max->setIcon(maxIcon);
close->setIcon(closeIcon);
QHBoxLayout *layout = new QHBoxLayout(this);
layout->setSpacing(0);
layout->addWidget(min);
layout->addWidget(max);
layout->addWidget(close);
setLayout(layout);
}
};