2013-07-30 176 views
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)顯示沒有。爲什麼?如何設置QToolBar的背景圖片?


我的預期結果是應用圖片作爲工具欄的背景。
但是工具欄的大小實際上是通過方法1的100x30。
其他信息:背景圖片的分辨率是800x60,MainWindow大小是800x600。

enter image description here


Qt5.1鐺64位,MacOSX10.8


+1

你不明白?我已經在代碼中發表了評論。這兩個問題是相關的,而第二點是根據代碼告訴實際結果,並將其刪除....不要假裝成爲專家 – CCC

+0

我的意思是,你的問題寫得很糟糕,很難理解,它從一段代碼開始,沒有先說任何事情,而且你也沒有把你的句子寫成大寫。這是不專業的。你的標題說「如何設置QToolBar的背景圖像?」但在你的問題中,你承認你已經知道如何去做(你的方法1)。你的問題真的是「爲什麼方法2不起作用」,這與你的頭銜無關。 – sashoalm

+0

當然不是,方法1是不正確的,所以我試着用方法2.兩種方法都失敗了,這就是爲什麼我問,而點2給了額外的上下文。對不起,夥計,像開始時的代碼一樣。不要在這裏廢話,只是浪費時間。你認爲你很專業,你可以編輯並提出建議,不要試圖扭曲我的想法。謝謝 – CCC

回答

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

+0

由於在Windows/Python/PySide/Qt 4.8下,您不需要額外的邊框條目來顯示背景,因此必須針對MacOS和/或Qt 5.x。 – Trilarion