更改包含 QButton 的 Qlayout 的背景颜色



我有这个Qt代码:

QHBoxLayout *taggerBox = new QHBoxLayout;
falseBtn = new QToolButton;
falseBtn->setText(tr("False"));
voidBtn = new QToolButton;
voidBtn->setText(tr("Void"));
taggerBox->addWidget(falseBtn);
taggerBox->addWidget(voidBtn);

我想更改QHBoxLayout的背景(不是每个按钮的背景(。我没有找到任何方法来更改QLayout的背景颜色。

我该怎么做?

谢谢!

QLayout 不是一个可视元素,它是一个调整所包含小部件位置的容器。您可以更改 QFrame 或包含 QLayout 的其他小部件的背景。

由于QHBoxLayout不是QWidget它没有自己的外观。所以你不能改变它的颜色。

您必须添加一个设置布局的干预小部件,并更改该小部件的背景。 例如

auto *taggerBox = new QWidget;
auto *layout = new QHBoxLayout(taggerbox);
falseBtn = new QToolButton(tr("False"));
voidBtn = new QToolButton(tr("Void"));
layout->addWidget(falseBtn);
layout->addWidget(voidBtn);
auto palette = taggerBox->palette();
palette.setColor(QPalette::Window, Qt::blue);
taggerBox->setPalette(palette);

如果您在某个类的构造函数中执行此操作,则对象可能与类具有相同的生存期,因为没有必要动态分配它们。在这种情况下,小部件和布局应该是类成员:

class MyClass : ... {
QWidget taggerBox;
QHBoxLayout taggerLayout{&taggerBox};
QToolButton falseBtn{tr("False")};
QToolButton voidBtn{tr("Void")};
public:
MyClass(...);
};
MyClass::MyClass(...) : ... {
taggerLayout.addWidget(&falseBtn);
taggerLayout.addWidget(&voidBtn);
auto palette = taggerBox.palette();
palette.setColor(QPalette::Window, Qt::blue);
taggerBox.setPalette(palette);
...
}

相关内容

  • 没有找到相关文章

最新更新