c++ - 我如何从按钮运行命令,按下 Qt - C++ 可能

标签 c++ qt command-line qt-creator

因为我正在尝试完成一个程序,并且我想要一个图形界面,所以我正在尝试非常快速地重建 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"));顺便说一下。

qt app

最佳答案

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/

相关文章:

c++ - 我可以将智能指针推送到智能指针列表吗?

javascript - NPM rimraf - 文件夹丢失时继续执行(停止退出代码 1)

c++ - 在#include <cstdint> 之后使用类型的 Clang++ -fmodules 错误

c++ - C++中的访问冲突错误

c++ - 行编辑setText函数Qt

c++ - 如何在 QSortFilterProxyModel 中获取一个项目的行给 QString?

perl - 如何在 Perl 单行代码中打印正在处理的文件的名称?

bash - 如何使用 Bash 回显包含匹配文件的目录?

c++ - 在同一个对象上创建多个 shared_ptr "families"时 shared_from_this 的意外行为

python - QThread 到 QProcesses 的信号/槽