代码之家  ›  专栏  ›  技术社区  ›  Surjya Narayana Padhi

设置QpushButton的背景图像

  •  6
  • Surjya Narayana Padhi  · 技术社区  · 14 年前

    我正在努力为QpushButton设置背景图像。到现在为止还没有成功。下面是我的代码。

    appsWidget::appsWidget(QWidget *parent)
        :QWidget(parent)
    {
        QPushButton *button1 = new QPushButton("SETTINGS",this);
        QPushButton *button2 = new QPushButton("TEST",this);
        QPushButton *button3 = new QPushButton("IE",this);
    
        button1->setStyleSheet("background-image:url(config.png)"); -> No success
    
    
        qDebug("appWidget initialized.");
    
        QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(button1);
        layout->addWidget(button2);
        layout->addWidget(button3);
        this->setLayout(layout);
        connect(button1,SIGNAL(clicked()),this,SLOT(setClickIndex1()));
        connect(button2,SIGNAL(clicked()),this,SLOT(setClickIndex2()));
        connect(button3,SIGNAL(clicked()),this,SLOT(setClickIndex3()));
    }
    

    我在样式表中使用的图像位于同一个项目文件夹中。 有人有什么解决办法吗?

    3 回复  |  直到 12 年前
        1
  •  6
  •   Brian Roach    14 年前

    必须将flat属性设置为true:

    button1->setFlat(true);

    您还必须设置自动填充背景-

    button1->setAutoFillBackground(true);

    您可能需要查看qtoolbutton,它不要求它是平面的,以便渲染图像。我正在一个我正在编写的应用程序中使用它们,它们看起来非常漂亮:

    m_showAddCommentButton = new QToolButton();
    m_showAddCommentButton->setAutoFillBackground(true);
    palette = m_showAddCommentButton->palette();
    palette.setColor(QPalette::Button,QColor(82,110,166));
    m_showAddCommentButton->setPalette(palette);
    m_showAddCommentButton->setIcon(QIcon(":/uiImages/addComment_50_50.jpg"));
    m_showAddCommentButton->setIconSize(QSize(40,40));
    m_showAddCommentButton->setToolTip("Comment");
    connect(m_showAddCommentButton, SIGNAL(clicked()),
            manager, SLOT(showAddComment()));
    hLayout->addWidget(m_showAddCommentButton,0);
    

    (我的图像存储为资源)

        2
  •  2
  •   Matt Fenwick sagarcool89    12 年前

    你的css选择器不正确。

    你应该这样做:

    button1->setStyleSheet("QPushButton{ background-image: url(config.png); }");
    
        3
  •  1
  •   Vasaka    12 年前

    您可以使用画笔作为调色板元素来填充任何小部件的背景,当按钮是平的时QpushButton可以工作。

    QPixmap pixmap("image.jpg");
    QPalette palette;    
    QPushButton *button= new QPushButton(this);
    palette.setBrush(button->backgroundRole(), QBrush(pixmap));
    
    button->setFlat(true);
    button->setAutoFillBackground(true);    
    button->setPalette(palette);