У меня такое впечатление, что он нас тролит
Упорно создаёт экземпляры приёмников - передатчиков в куче в слоте обработчика нажатия на кнопку
Передатчик я создаю не в куче, а в стеке по клику мышки. Что плохого, если я открыл, передал (кстати, забыл закрыть порт)?
C++ (Qt)
void Dialog::on_sendPushButton_clicked()
{
Sender sender( ui->portNameComboBox->currentText( ) );
QByteArray data;
data.append( ui->byteSpinBox->value( ) );
try {
sender.send( data );
} catch( const PortError &e ) {
QMessageBox::critical( this, "Error", QString( e.what( ) ) );
return;
} catch( ... ) {
QMessageBox::critical( this, "Error", "Error: unknown exception" );
return;
}
}
Порт в деструкторе теперь закрываю:
C++ (Qt)
~Sender( ) {
m_serialPort.close( );
}
А приёмник создаю в конструкторе диалогового окна:
C++ (Qt)
m_receiver = new Receiver( ui->portNameComboBox->currentText( ) );
try {
m_receiver->run( );
} catch( const PortError &e ) {
QMessageBox::critical( this, "Error", QString( e.what( ) ) );
} catch( ... ) {
QMessageBox::critical( this, "Error", "Error: unknown exception" );
}
connect( m_receiver, SIGNAL( receiverData( QByteArray ) ), this, SLOT( showData( QByteArray ) ) );