5

を作成したthis->setWindowFlags(Qt::FramelessWindowHint);ので、タイトルバーはありません。したがって、私は自分で実装しています。ただし、続行する前に、閉じるボタン、最小化ボタン、最大化ボタンをネイティブOSのように追加する標準的な方法があるかどうかを知りたいと思いました(つまり、WindowsではWindowsの閉じるボタンのように見え、osxでも同じように見えるはずです)。およびLinux)。

4

1 に答える 1

7

QStyleOSスタイルに基づいて多くの標準アイコンを取ります。このアイコンは、現在の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 に答える