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