2013-07-30 1 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?


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

enter image description here


Qt5.1 лязг 64 бит, MacOSX10.8


+1

Что вы не понимаете? Я сделал комментарии в коде. два вопроса связаны друг с другом, а пункт 2 показывает фактический результат на основе кода, и вы его удаляете .... не претендуйте на эксперт – 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

Должен быть определен для MacOS и/или Qt 5.x, потому что в Windows/Python/PySide/Qt 4.8 вам не нужна дополнительная запись границы для отображения фона. – Trilarion