Как настроить фоновое изображение 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