5

我创建了一个this->setWindowFlags(Qt::FramelessWindowHint);,所以没有标题栏。因此,我正在实施我自己的。然而,在我继续之前,我想知道是否有一种标准方法可以以原生操作系统的方式添加关闭、最小化和最大化按钮(即在 Windows 上它应该看起来像 Windows 关闭按钮,对于 osx和Linux)。

4

1 回答 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 回答