Qt:我应该使用哪个 object/item 来创建可点击的图标
Qt: Which object/item should I use to create clickable icons
我正在尝试为 rpg(角色扮演游戏)(npc/任务/物品等)编写一个编辑器。我需要创建一个带有代表 npc 图像的 "white background" 的图标。它应该是可点击的(当它被点击时,当前选中的npc的图标ID将根据选择设置)。
我已经设法构建了一个弹出对话框来显示所有图标,但无法设法找到创建可点击图标的方法。我应该实施哪个 class 才能使其正常工作?
可点击的图标可以使用 QPushButton
or QToolButton
:
QPushButton* button = new QPushButton;
button->setIcon(QIcon("/path/to/my/icon"));
我做过类似的事情,但不想要看起来像按钮的东西,也不想进入样式覆盖或特殊绘画。相反,我创建了一个派生自 QLabel 的 ClickableLabel class。
代码的相关部分是:
class ClickableLabel : public QLabel
{
protected:
virtual void mouseReleaseEvent (QMouseEvent *evt)
{
emit clicked (evt->button ());
}
signals:
void clicked (int button);
...rest of class definition...
}
您可以根据需要调整信号参数。
可点击的 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();
}
我正在尝试为 rpg(角色扮演游戏)(npc/任务/物品等)编写一个编辑器。我需要创建一个带有代表 npc 图像的 "white background" 的图标。它应该是可点击的(当它被点击时,当前选中的npc的图标ID将根据选择设置)。
我已经设法构建了一个弹出对话框来显示所有图标,但无法设法找到创建可点击图标的方法。我应该实施哪个 class 才能使其正常工作?
可点击的图标可以使用 QPushButton
or QToolButton
:
QPushButton* button = new QPushButton;
button->setIcon(QIcon("/path/to/my/icon"));
我做过类似的事情,但不想要看起来像按钮的东西,也不想进入样式覆盖或特殊绘画。相反,我创建了一个派生自 QLabel 的 ClickableLabel class。
代码的相关部分是:
class ClickableLabel : public QLabel
{
protected:
virtual void mouseReleaseEvent (QMouseEvent *evt)
{
emit clicked (evt->button ());
}
signals:
void clicked (int button);
...rest of class definition...
}
您可以根据需要调整信号参数。
可点击的 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();
}