我想创建一个没有任何样式的自定义按钮,它只显示一个 .png 图像。
我尝试使用 setIcon 方法创建一个 pushButton,但这使用了 pushButton 银色样式,我只想显示图像并将其作为按钮。
另外,我尝试使用 QAction
newAct = new QAction(QIcon(":/new/prefix1/images/appbar.close.png"),
但是,如果没有工具栏,这不会显示任何内容。
有什么想法可以让它发挥作用吗?
也许这段代码可以帮助你。创建一个 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));
}
有2个解决方案:
如果你愿意继承 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"));
在 QtCreator 你可以试试这个:
像按钮一样工作,看起来像图像;)
首先,添加资源文件,创建前缀并添加您需要的文件。在设计器中,右键单击按钮并更改样式表。
background: url(":\filePath");
或者,您可以这样做,添加资源(是的,它会显示它是无效的样式表,但不要担心):然后通过在 url 之前添加关键字背景来编辑代码,使其看起来像这样
background: url(":\filePath");
其中文件路径是您决定使用添加资源选项时自动检测到的资源文件的路径。