我创建了一个this->setWindowFlags(Qt::FramelessWindowHint);
,所以没有标题栏。因此,我正在实施我自己的。然而,在我继续之前,我想知道是否有一种标准方法可以以原生操作系统的方式添加关闭、最小化和最大化按钮(即在 Windows 上它应该看起来像 Windows 关闭按钮,对于 osx和Linux)。
问问题
5093 次
1 回答
7
QStyle
采用许多基于 OS 风格的标准图标。您可以从当前的操作系统样式中获取此图标,然后自行绘制。
这是一个简单的实现供参考。
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);
}
};
于 2012-12-22T06:24:26.237 回答