1

我想创建一个没有任何样式的自定义按钮,它只显示一个 .png 图像。

我尝试使用 setIcon 方法创建一个 pushButton,但这使用了 pushButton 银色样式,我只想显示图像并将其作为按钮。

另外,我尝试使用 QAction

newAct = new QAction(QIcon(":/new/prefix1/images/appbar.close.png"),

但是,如果没有工具栏,这不会显示任何内容。

有什么想法可以让它发挥作用吗?

4

4 回答 4

2

也许这段代码可以帮助你。创建一个 QPushButton,为其设置一个图标并使用以下代码:

YourQPushButton->setFlat(true);

更新 :

MyPushButton.h:

#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H

#include <QLabel>

class MyPushButton : public QLabel
{
    Q_OBJECT
public:
    explicit MyPushButton(QWidget *parent = 0);

signals:
    void clicked();

protected:
    void mouseReleaseEvent(QMouseEvent *ev);

};

#endif // MYPUSHBUTTON_H

我的按钮.cpp

void MyPushButton::mouseReleaseEvent(QMouseEvent *ev)
{
    emit clicked();
}

如何使用 :

MyPushButton btn;
btn.setPixmap(QPixmap(":/rm.png"));
QObject::connect(&btn, SIGNAL(clicked()), qApp, SLOT(quit()));
btn.show();

您甚至可以将此功能添加到MyPushButton类中以提高工作效率:)

void MyPushButton::setIcon(QPixmap px, int w, int h)
{
    setPixmap(px.scaled(w, h));
}
于 2013-04-18T09:55:04.853 回答
2

有2个解决方案:

  1. 子类 QLabel 发出 clicked() 信号并将您的图像加载到该子类
  2. 您可以将样式表设置为 QPushButton 类似这样How to change QPushButton icon using stylesheets in Qt app

如果你愿意继承 QLabel - 这里有一个类:

头文件 qspoilerlabel.h:

#ifndef QSPOILERLABEL_H
#define QSPOILERLABEL_H

#include <QLabel>
#include <QEvent>

class QSpoilerLabel : public QLabel
{
    Q_OBJECT
public:
QSpoilerLabel( const QString & text, QWidget * parent = 0 );
QSpoilerLabel(){}

signals:
    void clicked();

public slots:
    void slotClicked();

protected:
    void mouseReleaseEvent ( QMouseEvent * event );
};

#endif // QSPOILERLABEL_H

来源 qspoilerlabel.cpp:

#include "qspoilerlabel.h"
QSpoilerLabel::QSpoilerLabel( const QString & text, QWidget * parent )
:QLabel(parent)
{
    connect( this, SIGNAL( clicked() ), this, SLOT( slotClicked() ) );    
}

void QSpoilerLabel::slotClicked()
{
//qDebug()<<"Clicked";
}

void QSpoilerLabel::mouseReleaseEvent ( QMouseEvent * event )
{
    emit clicked();
}

您可以使用方法将图像加载到标签setPixmap。它看起来像这样:

label->setPixmap((QPixmap::fromImage(QImage(":/new/prefix1/images/appbar.close.png"));
于 2013-04-18T10:14:14.540 回答
0

在 QtCreator 你可以试试这个:

  1. 你用你的 png 图像制作一个标签。
  2. 在标签顶部放置一个带有样式表“背景:透明;边框:无;”的 QPushButton

像按钮一样工作,看起来像图像;)

于 2013-04-18T10:06:37.267 回答
0

首先,添加资源文件,创建前缀并添加您需要的文件。在设计器中,右键单击按钮并更改样式表。

    background: url(":\filePath");

或者,您可以这样做,添加资源(是的,它会显示它是无效的样式表,但不要担心):然后通过在 url 之前添加关键字背景来编辑代码,使其看起来像这样

    background: url(":\filePath");

其中文件路径是您决定使用添加资源选项时自动检测到的资源文件的路径。

于 2013-08-27T09:39:05.343 回答