因为我正在尝试完成一个程序,并且我想要一个图形界面,所以我正在尝试非常快速地重建 QT Creator 作为示例提供的 QT 应用程序。以下是我希望的相关内容:
arrowpad.h
:
#ifndef ARROWPAD_H
#define ARROWPAD_H
#include <QWidget>
QT_BEGIN_NAMESPACE
class QPushButton;
QT_END_NAMESPACE
//! [0]
class ArrowPad : public QWidget
//! [0] //! [1]
{
//! [1] //! [2]
Q_OBJECT
//! [2]
public:
ArrowPad(QWidget *parent = 0);
private:
QPushButton *upButton;
QPushButton *downButton;
QPushButton *leftButton;
QPushButton *rightButton;
};
#endif
arrowpad.cpp
:
#include <QtGui>
#include "arrowpad.h"
ArrowPad::ArrowPad(QWidget *parent)
: QWidget(parent)
{
//! [0]
upButton = new QPushButton(tr("&Up"));
//! [0] //! [1]
downButton = new QPushButton(tr("&Down"));
//! [1] //! [2]
leftButton = new QPushButton(tr("&Left"));
//! [2] //! [3]
rightButton = new QPushButton(tr("&Right"));
//! [3]
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(upButton, 0, 1);
mainLayout->addWidget(leftButton, 1, 0);
mainLayout->addWidget(rightButton, 1, 2);
mainLayout->addWidget(downButton, 2, 1);
setLayout(mainLayout);
}
我怎样才能让它在我按下按钮时运行命令?我找到了 this ,但我不知道如何与 qpushbutton 东西集成,否则它只是认为它是一串文本...... .
这是当前结果 - 我不认为按钮名称在上面的 .cpp
脚本中指定为 (tr("&Up"));
顺便说一下。
最佳答案
Apartidge 是正确的,但要添加到这一点上并将多个按钮连接到同一功能,您只需连接正确的信号和插槽即可。
以你的例子为例:
connect(upButton, SIGNAL(clicked()), this, SLOT(onButtonPressed()));
connect(downButton, SIGNAL(clicked()), this, SLOT(onButtonPressed()));
connect(leftButton, SIGNAL(clicked()), this, SLOT(onSomeOtherButtonPressed()));
connect(rightButton, SIGNAL(clicked()), this, SLOT(onYetAnotherButtonPressed()));
将其放入您的构造函数中会将 upButton 和 downButton 连接到同一个插槽 onButtonPressed()。 leftButton 将触发 onSomeOtherButtonPressed(),rightButton 将触发 onYetAnotherButtonPressed()。
关于c++ - 我如何从按钮运行命令,按下 Qt - C++ 可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20550667/