Хотите добавить кнопку для setTimer и setText

Я новичок в дизайне GUI. Здесь, при отправке и получении сообщений (с плавающей запятой, целочисленных значений) с использованием DDS (OpenSplice) я пытаюсь добавить pushButton к моим уже существующим меткам (отображая некоторые значения с плавающей запятой, как показано ниже), чтобы после нажатия на кнопку pushButton я должен иметь возможность видеть данные на моем ярлыке.
Я попытался добавить кнопку с помощью примера отправителя Qt Network. Теперь я получаю ошибку неопределенная ссылка на ‘MainWindow :: on_pushButton_clicked () в файле moc_mainwindow.cpp пока строю проект.

fastsender.cpp

FastSender::FastSender(QLabel *x, QObject *parent) : QObject(parent)
{
wSend = x;
dataTimer = new QTimer(this);
emergency = new QPushButton(tr("Emergency"));
buttonBox = new QDialogButtonBox;
buttonBox->addButton(emergency,QDialogButtonBox::ActionRole);connect(emergency, SIGNAL(clicked()), this, SLOT(startsending()));
connect(dataTimer, SIGNAL(timeout()), this, SLOT(walk()));
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(buttonBox);
}

void FastSender::startsending()
{
emergency->setEnabled(false);
dataTimer->start(100); // Interval 0 means to refresh as fast as possible
}int FastSender::walk()
{
msg->value= i+0.1;
snprintf (buf, MAX_MSG_LEN, "Message no. %d", i);

cout << "Writing message: \"" << msg->value << "\"" << endl;
status = talker->write(*msg, userHandle);

QString s=  QString::number(msg->value, 'f',8);
wSend->setText(s);
}

fastsender.h

class FastSender : public QObject
{
Q_OBJECT
public:
explicit FastSender(QObject *parent = 0);
FastSender(QLabel *x, QObject *parent = 0);
~FastSender();
signals:

private:
QTimer* dataTimer;
QLabel *wSend;
DDS::DomainParticipantFactory_var       dpf;

DDS::DomainParticipant_var              parentDP;
DDS::Topic_var                          signalTopic;
DDS::DataReader_var                     parentReader;
DDS::DataWriter_var                     parentWriter;
fw::signalSeq_var                       msgSeq;
char  *                                 signalTypeName;
fw::signalDataWriter_var                talker;
fw::signal                              *msg;
DDS::InstanceHandle_t                   userHandle;
DDS::Publisher_var                      fwPublisher;
int                                     alpa;
QPushButton                             *emergency;
QDialogButtonBox                        *buttonBox;

public slots:

int walk();
int hello();
void startsending();
};

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
fwdds = new FastWanDDS(ui->label);//receiving values are displayed in label
fwdds1 = new FastSender(ui->label_2);//Sending values are displayed in label_2
}

mainwindow.h

Ui::MainWindow *ui;
QTimer* timer;
int counter;
FastWanDDS *fwdds;
FastSender *fwdds1;

Любая помощь приветствуется.

Примечание: только фрагменты кода представлены

-1

Решение

Я получил это работать таким образом. Это работает для вас?

mainwindow.cpp

#include "mainwindow.h"#include "fastsender.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QLabel* label = new QLabel("unchanged");
FastSender* fs = new FastSender(label);
setCentralWidget(fs);
}

MainWindow::~MainWindow()
{

}

fastsender.h

#ifndef FASTSENDER_H
#define FASTSENDER_H

#include <QLabel>
#include <QTimer>
#include <QPushButton>
#include <QDialogButtonBox>
#include <QHBoxLayout>

class FastSender : public QWidget
{
Q_OBJECT
public:
FastSender(QLabel* label, QWidget* parent = 0)
: QWidget(parent)
, _label(label)
, _timer(new QTimer)
, _emergency(new QPushButton(tr("Emergency")))
, _bbox(new QDialogButtonBox)
{
_bbox->addButton(_emergency, QDialogButtonBox::ActionRole);

QHBoxLayout* layout = new QHBoxLayout;
layout->addWidget(_label);
layout->addWidget(_bbox);

setLayout(layout);

connect(_emergency, SIGNAL(clicked(bool)), this, SLOT(startsending()));
connect(_timer, SIGNAL(timeout()), this, SLOT(walk()));
}

public slots:
void startsending()
{
_emergency->setEnabled(false);
_timer->start(100);
}

int walk()
{
_label->setText("changed");
_emergency->setEnabled(true);
}

private:
QLabel* _label;
QTimer* _timer;
QPushButton* _emergency;
QDialogButtonBox* _bbox;
};

#endif // FASTSENDER_H
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]