c++ qt5.9 QToolBox 为每个tab 设置不同的背景图片
时间: 2024-05-14 14:18:59 浏览: 87
Qt5背景设置方式
可以通过重写 QToolBox 的 paintEvent() 函数来为每个 tab 设置不同的背景图片。
具体步骤如下:
1. 在 QToolBox 的子类中添加一个 QList<QPixmap> 类型的成员变量 m_pixmaps,用于存储每个 tab 的背景图片。
2. 在 QToolBox 的构造函数中初始化 m_pixmaps,例如:
```
m_pixmaps.append(QPixmap(":/images/image1.png"));
m_pixmaps.append(QPixmap(":/images/image2.png"));
m_pixmaps.append(QPixmap(":/images/image3.png"));
```
3. 重写 QToolBox 的 paintEvent() 函数,根据当前选中的 tab 及其索引来绘制对应的背景图片,例如:
```
void MyToolBox::paintEvent(QPaintEvent *event)
{
QToolBox::paintEvent(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
int index = currentIndex();
if (index >= 0 && index < m_pixmaps.count()) {
painter.drawPixmap(rect(), m_pixmaps.at(index));
}
}
```
4. 在使用 QToolBox 的地方使用 MyToolBox 类来代替 QToolBox。
注意:如果 tab 的数量较多,建议使用 QStyleOption 来绘制背景图片,以避免大量的 QPixmap 占用过多的内存。
阅读全文