Cast?
-
Hallo bin Anfänger was QT angeht, habe folgende funktion geschrieben:
QString a = this->lineEdit2->text(); QString b = this->lineEdit2_2->text(); int ergebnis = (a.toInt() + b.toInt()); this->lineEdit2_2_2->setText(ergebnis);
Nun ist es nicht möglich das ergebnis wieder in QString zurück zu casten, explizit mit QString() geht es auch nicht. Weiß jemand ne lösung?
-
QString::number(ergebnis);
-
Danke, es kommt zumindest keine Fehlermeldung mehr Aber beim debuggen merke ich dass er anscheinend den Slot nicht findet. Hier mal der code:
Im Konstruktor der Form:
connect(pushButton1, SIGNAL(pressed()), this, SLOT(rechnung()));
Aber auf knopfdruck passiert gar nichts
-
sTyL3X schrieb:
Danke, es kommt zumindest keine Fehlermeldung mehr Aber beim debuggen merke ich dass er anscheinend den Slot nicht findet. Hier mal der code:
Im Konstruktor der Form:
connect(pushButton1, SIGNAL(pressed()), this, SLOT(rechnung()));
Aber auf knopfdruck passiert gar nichts
Gibt es eine meldung in der Konsole?
-
beim debuggen ja:
QObject::connect: No such slot Form1::rechnung() QObject::connect: (sender name: 'pushButton1') QObject::connect: (receiver name: 'Form1')
-
sTyL3X schrieb:
beim debuggen ja:
QObject::connect: No such slot Form1::rechnung() QObject::connect: (sender name: 'pushButton1') QObject::connect: (receiver name: 'Form1')
Wenn Form1 keinen Slot hat, dann hat es halt keinen. Du musst mal die Definition von Form1 zeigen. Am besten den ganzen Header.
-
#ifndef FORM1_H #define FORM1_H #include <qvariant.h> #include <qmainwindow.h> class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QSpacerItem; class QAction; class QActionGroup; class QToolBar; class QPopupMenu; class QLineEdit; class QLabel; class QPushButton; class Form1 : public QMainWindow { Q_OBJECT public: Form1( QWidget* parent = 0, const char* name = 0, WFlags fl = WType_TopLevel ); ~Form1(); QLineEdit* lineEdit2; QLabel* textLabel1; QLabel* textLabel1_2; QLineEdit* lineEdit2_2; QLineEdit* lineEdit2_2_2; QPushButton* pushButton1; protected slots: virtual void languageChange(); void rechnung (void); }; #endif // FORM1_H
-
Hm, sieht eigentlich ganz gut aus. Hilft es den Slot public zu machen?
Ansonsten zeig mal den ganzen Code.
-
Leider nicht poste hier nochmal den konstruktor und die funktionen:
Form1::Form1( QWidget* parent, const char* name, WFlags fl ) : QMainWindow( parent, name, fl ) { (void)statusBar(); if ( !name ) setName( "Form1" ); setCentralWidget( new QWidget( this, "qt_central_widget" ) ); lineEdit2 = new QLineEdit( centralWidget(), "lineEdit2" ); lineEdit2->setGeometry( QRect( 50, 89, 89, 20 ) ); textLabel1 = new QLabel( centralWidget(), "textLabel1" ); textLabel1->setGeometry( QRect( 160, 80, 20, 33 ) ); QFont textLabel1_font( textLabel1->font() ); textLabel1_font.setPointSize( 20 ); textLabel1_font.setBold( TRUE ); textLabel1->setFont( textLabel1_font ); textLabel1_2 = new QLabel( centralWidget(), "textLabel1_2" ); textLabel1_2->setGeometry( QRect( 310, 80, 20, 33 ) ); QFont textLabel1_2_font( textLabel1_2->font() ); textLabel1_2_font.setPointSize( 20 ); textLabel1_2_font.setBold( TRUE ); textLabel1_2->setFont( textLabel1_2_font ); lineEdit2_2 = new QLineEdit( centralWidget(), "lineEdit2_2" ); lineEdit2_2->setGeometry( QRect( 200, 90, 89, 20 ) ); lineEdit2_2_2 = new QLineEdit( centralWidget(), "lineEdit2_2_2" ); lineEdit2_2_2->setGeometry( QRect( 360, 90, 89, 20 ) ); pushButton1 = new QPushButton( centralWidget(), "pushButton1" ); pushButton1->setGeometry( QRect( 370, 140, 81, 31 ) ); connect(pushButton1, SIGNAL(pressed()), this, SLOT(rechnung())); // toolbars languageChange(); resize( QSize(600, 480).expandedTo(minimumSizeHint()) ); clearWState( WState_Polished ); } /* * Destroys the object and frees any allocated resources */ Form1::~Form1() { // no need to delete child widgets, Qt does it all for us } /* * Sets the strings of the subwidgets using the current * language. */ void Form1::languageChange() { setCaption( tr( "Form1" ) ); textLabel1->setText( tr( "+" ) ); textLabel1_2->setText( tr( "=" ) ); pushButton1->setText( tr( "&Berechne" ) ); pushButton1->setAccel( QKeySequence( tr( "Alt+B" ) ) ); } void Form1::rechnung (void) { QString a = this->lineEdit2->text(); QString b = this->lineEdit2_2->text(); int ergebnis = (a.toInt() + b.toInt()); this->lineEdit2_2_2->setText(QString::number(ergebnis)); }
-
Bei mir funktioniert der Code mit der trivialen main.cpp:
#include <qapplication.h> #include <qpushbutton.h> #include "form1.h" int main( int argc, char **argv ) { QApplication a( argc, argv ); Form1 hello; a.setMainWidget( &hello ); hello.show(); return a.exec(); }
Vielleicht solltest du alles neu bauen.
-
Gut nach dem Rebuild hats gefunzt
Aber ich schieß gleich noch ne frage hinterher:
Gibt es eine Möglichkeit QString in char zu casten? wegen einer switch-anweisungEdit: Ok habs inzwischen hinbekommen weiß zwar nicht ob es so elegant ist aber schaut selbst
QString abc = comboBox1->currentText(); const char *operand = abc.latin1(); char operand1 = operand[0];