我想绘制 slider 的背景。我试过了,但是颜色覆盖了整个 slider 。这是在QSlider的继承类中
void paintEvent(QPaintEvent *e) {
QPainter painter(this);
painter.begin(this);
painter.setBrush(/*not important*/);
// This covers up the control. How do I make it so the color is in
// the background and the control is still visible?
painter.drawRect(rect());
painter.end();
}
最佳答案
要设置小部件的背景,您可以设置样式表:
theSlider->setStyleSheet("QSlider { background-color: green; }");
下面将设置小部件的背景,让您做更多的事情:
void paintEvent(QPaintEvent *event) {
QPainter painter;
painter.begin(this);
painter.fillRect(rect(), /* brush, brush style or color */);
painter.end();
// This is very important if you don't want to handle _every_
// detail about painting this particular widget. Without this
// the control would just be red, if that was the brush used,
// for instance.
QSlider::paintEvent(event);
}
顺便说一句。以下两行示例代码将产生警告:
QPainter painter(this);
painter.begin(this);
即这个使用 GCC 的:
QPainter::begin: A paint device can only be painted by one painter at a time.
所以请确保,正如我在示例中所做的那样,您要么执行 QPainter painter(this)
要么执行 painter.begin(this)
。
关于c++ - Qt drawRect 在后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7942996/