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

Qt: Which object/item should I use to create clickable icons

本文关键字:创建 项目 图标 对象 我应该 QT      更新时间:2023-10-16

我正在尝试编写RPG(角色扮演游戏)(NPC/Quests/Quartion等)的编辑器。我需要创建一个代表NPC图像的"白色背景"的图标。应该单击(单击时,当前选定的NPC的图标ID将根据选择设置)。

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

可以使用QPushButtonQToolButton来实现可单击的图标:

QPushButton* button = new QPushButton;
button->setIcon(QIcon("/path/to/my/icon"));

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();
}

我做了类似的事情,但不想要看起来像按钮的东西,也不想进入时尚覆盖或特殊绘画。相反,我创建了一个从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...
}

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