Как настроить фоновое изображение QToolBar?

//MainWindow.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    //...

    QToolBar * toolbar = new QToolBar(this);

    this->addToolBar(Qt::BottomToolBarArea, toolbar);
    toolbar->setMovable(false);

    QToolButton * button = new QToolButton(this);
    toolbar->addWidget(button);

    //way 1: It display a picture
    toolbar->setStyleSheet("background-image: url(:/images/toolbarBg)");

    //way 2: It doesn't display picture
    //qApp->setStyleSheet("QToolBar {background-image: url(:/images/toolbarBg)}");
}

Способ (1) может отображать панель инструментов изображения Bg2x, но способ (2) ничего не отображать. Зачем?


Мой ожидаемый результат - применить изображение в качестве фона панели инструментов.
Однако размер панели инструментов на самом деле в 100x30 с помощью метода 1.
Дополнительная информация: разрешение фонового изображения 800х60, размер главного окна 800х600.


Qt5.1 clang 64 bit, MacOSX10.8


1 ответ

Решение

Рабочий образец:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , m_toolbar( new QToolBar )
{
    this->addToolBar(Qt::BottomToolBarArea, m_toolbar);
    //m_toolbar->setStyleSheet("background-image: url(:/image/toolbar.png);");   
    m_toolbar->setStyleSheet("background-image: url(:/images/toolbar.png); border: 0px")
}

Следующая строка не работает,

m_toolbar->setStyleSheet("background-image: url(:/image/toolbar.png);"); 

добавлять border : 0px чтобы обеспечить рисунок, а затем он показывает картину.

m_toolbar->setStyleSheet("background-image: url(:/images/toolbar.png); border: 0px")

применить стиль,

m_toolbar->setStyleSheet("background-image: url(:/images/toolbar.png); border: 0px")

или же

this->setStyleSheet("QToolBar{background-image: url(:/images/toolbar.png); border: 0px;}");

Оба они работают хорошо.

Протестировано под MacOS 10.9, Qt5.1.1

Другие вопросы по тегам