Qtの設定QWidget背景色

3219 ワード

簡単に述べる
QWidgetはすべてのユーザーインターフェースオブジェクトのベースクラスであり、これは同じ方法で他のサブコントロールの背景色を変更することができることを意味する.
Qtでのウィンドウ背景の設定について、以下の3つの方法を紹介します.
使用QPalette Steyle Sheetを使う描画イベント普通はQSSでウィンドウの背景を設定しなくても、使うことを勧めません.(ここはウインドウに対してです.サブ部品なら大丈夫です.)ウィンドウがQSSを使用して背景を設定した後、サブユニットが同じ方式で設定しないと、デフォルトでは親ウィンドウのスタイルが継承されます.
QPaletteを使う
QPaletteを使って背景色を設定します.
m_pWidget = new QWidget(this);
m_pWidget->setGeometry(0, 0, 300, 100);
QPalette pal(m_pWidget->palette());

//      
pal.setColor(QPalette::Background, Qt::black);
m_pWidget->setAutoFillBackground(true);
m_pWidget->setPalette(pal);
m_pWidget->show();
Steyle Sheetを使う
スタイルシートを使って背景色を設定します.
m_pWidget = new QWidget(this);
m_pWidget->setGeometry(0, 0, 300, 100);
m_pWidget->setStyleSheet("background-color:black;");
m_pWidget->show();
サブクラス化QWidgetについては、アシスタントに説明があります.
// If you subclass from QWidget, you need to provide a paintEvent for your custom QWidget as below:
void CustomWidget::paintEvent(QPaintEvent *)
{
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
QWidgetをサブクラス化するには、スタイルテーブルを使用するためには、paintEventイベントを提供する必要があります.これはQWidgetのpaintEvent()が空なので、様式表はpaintを通じてウィンドウに描かれます.
警告:サブクラス化を確保するQWidgetはQ_を定義しています.OBJECTマクロです
図形描画イベント
paintEventを書き換えて、QPainterを使って背景を描きます.
void Widget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter p(this);
    p.setPen(Qt::NoPen);
    p.setBrush(Qt::black);
    p.drawRect(rect());
}
より多くの参照
Qtのフォームは透明です.