我创建了一个 this->setWindowFlags(Qt::FramelessWindowHint);
,因此没有标题栏。 因此,我正在实现自己的标题栏。 在继续之前,我想知道是否有一种标准方法以本地操作系统外观方式添加关闭、最小化和最大化按钮(例如,在Windows上,它应该看起来像Windows关闭按钮,OS X和Linux也是如此)。
我创建了一个 this->setWindowFlags(Qt::FramelessWindowHint);
,因此没有标题栏。 因此,我正在实现自己的标题栏。 在继续之前,我想知道是否有一种标准方法以本地操作系统外观方式添加关闭、最小化和最大化按钮(例如,在Windows上,它应该看起来像Windows关闭按钮,OS X和Linux也是如此)。
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);
}
};