0
//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)可以显示toolbarBg2x图片,但是方式(2)什么都不显示。为什么?


我的预期结果是将图片应用为工具栏的背景。
但是工具栏的大小实际上是通过方法 1 为 100x30。
附加信息:背景图片的分辨率为 800x60,MainWindow 大小为 800x600。

在此处输入图像描述


Qt5.1 clang 64 位,MacOSX10.8


4

1 回答 1

2

工作样本:

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 下测试

于 2013-07-31T01:40:37.707 回答