我是QT的开发人员,是初学者,这是按钮D的任务,下面是按钮A,B和C的代码。需要为按钮D编写代码,如果我们按按钮D,则应该执行A,B和C按钮的操作(一个接一个)。
if(ui->radioButton_wake->isChecked()) // Button A
{
ui->label_lastCommand->setText("Last command: Wake");
ui->progressBar->setMaximum(UPDATE_FREQUENCY * 122);
pJMPX->RDS_Set_11A_Enable(true);
progressTimer->start();
}
else if(ui->radioButton_beep->isChecked()) // Button B
{
ui->label_lastCommand->setText("Last command: Beep");
ui->progressBar->setMaximum(UPDATE_FREQUENCY * (ui->doubleSpinBox_general->value() + 122));
pJMPX->RDS_Set_11A_Enable(true);
progressTimer->start();
QTimer::singleShot(122000, this, [this](){
pJMPX->RDS_Set_11A_data(0x0008, 0x0000);
});
}
else if(ui->radioButton_beginPlayback->isChecked()) // Button c
{
ui->label_lastCommand->setText("Last command: Begin Playback");
ui->progressBar->setMaximum(UPDATE_FREQUENCY * (ui->doubleSpinBox_general->value() + 122));
pJMPX->RDS_Set_11A_Enable(true);
progressTimer->start();
QTimer::singleShot(122000, this, [this](){
pJMPX->RDS_Set_11A_data(0x0005, 0x0000);
});
}
else if(ui->radioButton->isChecked()) // Button D
{
// Code to execute operations of button A, B and C ( one after one ) ?
}
`````
我不知道您在哪里使用代码,但是与您提出的问题不匹配。我将回答实际提出的问题,而不是尝试修复代码。这就是在Qt中完成的方式。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void aSlot();
void bSlot();
void cSlot();
void dSlot();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
和来源
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::aSlot);
connect(ui->pushButton_2, &QPushButton::clicked, this, &MainWindow::bSlot);
connect(ui->pushButton_3, &QPushButton::clicked, this, &MainWindow::cSlot);
connect(ui->pushButton_4, &QPushButton::clicked, this, &MainWindow::dSlot);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::aSlot()
{
ui->plainTextEdit->appendPlainText("aSlot() called\n");
}
void MainWindow::bSlot()
{
ui->plainTextEdit->appendPlainText("bSlot() called\n");
}
void MainWindow::cSlot()
{
ui->plainTextEdit->appendPlainText("cSlot() called\n");
}
void MainWindow::dSlot()
{
aSlot();
bSlot();
cSlot();
}
您应该看一下QButtonGroup。可以用按钮注册此类,以后单击一个即可调用单个功能buttonClicked
。此函数的一个版本使用您在添加按钮时指定的标识符,另一个使用按钮对象本身。通过一个插槽,可以很容易地让一个类处理许多按钮。