Qt:我应该使用哪个对象/项目来创建可点击的图标

时间:2016-12-19 19:07:42

标签: c++ qt

我正在尝试为RPG编写一个编辑器(角色扮演游戏)(npc / quests / items等)。我需要创建一个带有“白色背景”的图标,代表npc的图像。它应该是可点击的(当它被点击时,将根据选择设置当前选择的npc的图标ID。)

我设法构建了一个弹出对话框来显示所有图标,但无法找到创建可点击图标的方法。我应该实现哪个类才能使其正常工作?

3 个答案:

答案 0 :(得分:2)

可以使用QPushButtonQToolButton

来实现可点击图标
QPushButton* button = new QPushButton;
button->setIcon(QIcon("/path/to/my/icon"));

答案 1 :(得分:0)

我做过类似的事情,但不想要看起来像按钮的东西,也不想进入风格覆盖或特殊绘画。相反,我创建了一个源自QLabel的ClickableLabel类。

代码的相关部分是:

class ClickableLabel : public QLabel
{
protected:

    virtual void mouseReleaseEvent (QMouseEvent *evt)
    {
        emit clicked (evt->button ());
    }

signals:

    void clicked (int button);

...rest of class definition...
}

您可以根据需要调整信号参数。

答案 2 :(得分:0)

Clickable QLabel:https://wiki.qt.io/Clickable_QLabel

与QPixmap一起使用:http://doc.qt.io/qt-4.8/qlabel.html#pixmap-prop

标题

class ClickableLabel : public QLabel
{
Q_OBJECT
public:
    explicit ClickableLabel( const QString& text="", QWidget* parent=0 );
    ~ClickableLabel();
signals:
    void clicked();
protected:
    void mousePressEvent(QMouseEvent* event);
};

来源

ClickableLabel::ClickableLabel(const QString& text, QWidget* parent)
    : QLabel(parent)
{
setText(text);
}

ClickableLabel::~ClickableLabel()
{
}

void ClickableLabel::mousePressEvent(QMouseEvent* event)
{
    emit clicked();
}