?
Hallo Zusammen,
ich entwickle meine Anwendung mit dem QT Designer.
Ich setze zusätzliche die QWT Lib und versuche
derzeit den Wert des Objekts zu ändern.
Dies mache ich mit
So verwendet ich die Zuweisung in der Routine
void MainWindow::UpdateScreens(QString StringName, QString Value)
{
float temp;
temp = Value.toFloat() * 0.1 ;
ui.VoltageDisplay->setValue( temp ); break;
}
// Definition der Klasse
class MainWindow : public QMainWindow
{
Q_OBJECT // Def. wird für moc benötigt
public:
MainWindow(); // Loadroutine überladen
private slots: // Slots für Ereignisse des Fenster
void Info_about(); // Info Box , Programm
void Info_qt(); // Info Box, qt Meldung
void File_Exit(); // Programm wird beendet
void UpdateScreens(QString Name, QString Value);
void InitHashTable(); // Kommando nach Zahl Tabelle
void CommunicationTimer(); // Datenübertragung
void TCPIPConnected(); // Verbindung aufgebaut
void TCPIPDisConnected(); // Verbindung abgebrochen
void TCPIPReadRobyData(); // Lese Daten von Roby
void TCPIPDisplayError(QAbstractSocket::SocketError socketError); // Fehlermeldung
private:
Ui::MainWindow ui; // Fenster Objekt, für QT Designer
QTcpSocket *tcpSocket; // Datenübertragungsobjekt für Socket Verbindung
QString IPAddress; // IP Adresse der Verbindung
quint16 Port; // Portadresse der Verbindung
int Connected; // Verbindung vorhanden
int WaitingForData; // Warte auf Antwort vom Server (syncrone Verb.)
QHash<QString, int> hashTable; // Codetabelle fuer die Kommandos
};
Hier noch der Constructor:
/ **************************************************************************
// Init des Fensters
// **************************************************************************
MainWindow::MainWindow()
{
Ui::MainWindow ui;
ui.setupUi(this);
// Datenübertragungstimer konfiguieren
QTimer *timer = new QTimer(this);
timer->start(5000); // Update rate 5000 ms
connect(timer, SIGNAL(timeout()), this, SLOT(CommunicationTimer()));
// Menue Slots setzen
ui.actionQuit->setStatusTip(tr("Beendet das Programm"));
connect( ui.actionQuit , SIGNAL(triggered()), this, SLOT(File_Exit()));
ui.action_aboutProgram->setStatusTip(tr("Zeigt Version Info des Programms an"));
connect( ui.action_aboutProgram , SIGNAL(triggered()), this, SLOT(Info_about()));
ui.action_aboutQT->setStatusTip(tr("Zeigt Version Info der QT Version an"));
connect( ui.action_aboutQT , SIGNAL(triggered()), this, SLOT(Info_qt()));
// TCP/IP Variablen vorbereiten
IPAddress="192.168.5.200" ;
Port = 7;
tcpSocket = new QTcpSocket(this);
Connected=false;
WaitingForData=false;
// TCP / IP Slots setzen
connect(tcpSocket, SIGNAL(connected()), this, SLOT(TCPIPConnected()));
connect(tcpSocket, SIGNAL(disconnected()), this, SLOT(TCPIPDisConnected()));
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(TCPIPReadRobyData()));
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(TCPIPDisplayError(QAbstractSocket::SocketError)));
InitHashTable();
statusBar()->showMessage(tr("Ready ..."));
tcpSocket->connectToHost(IPAddress, Port );
}
Nur leider Crashed die Anwendung bei dieser Zeile.
Ich vermute eine falsche Methode für das Ändern der Eigenschaft von irgend einem Objekt aus der Form.
Was mache ich hier falsch ?
Gruss