Hallo Leute,
seit gestern setze ich mich mit Qt unter C++ auseinander. Dafür bin ich eh schon recht weit
. Aber folgendes Problem:
Ich habe eine Anwenung mit zwei Schiebereglern, die man hin und her ziehen kann. Wenn ich den Button "Reset" drücke, will ich, dass beide Regler (Slider) wieder auf ihre Ausgangsposition gehen. Da mit der QTPushButton aber nur ein Ereignis clicked() auslöst, ist das nicht kompatibel mit dem Slot setValue(int) von QSlider. Ergo wird es mit dem üblichen connect-Statement wohl nicht klappen.
Folgender Code klappt leider auch nicht:
Anbei mal der Code der main.cpp. die ui_test3.h wurde vom Qt Designer (v4) erzeugt.
Für Vorschläge wäre ich langsam wirklich dankbar. Irgendwann gehts aufn Senkel, wenn man net draufkommt
/Edit:
Hat sich erledigt. Einerseits habe ich (notgedrungen) vergessen, in die Klassendeklaration Q_OBJECT zu schreiben. Wenn ich das tue, schmiert mir jedesmal der Compiler ab. Das Problem wiederum habe ich aber umgangen, indem ich den C++ Code sauber auf mehrere Dateien aufgeteilt hab.
Des Rätsels Lösung mit dem Reset ist trivial: mit nem IF gehts logischer Weise nicht, da die Bedingung ja nur einmal zur Laufzeit abgeprüft wird. Man muss ich also nen private slot definieren und den dann als Funktion der Klasse implementieren. Fertig.
seit gestern setze ich mich mit Qt unter C++ auseinander. Dafür bin ich eh schon recht weit
Ich habe eine Anwenung mit zwei Schiebereglern, die man hin und her ziehen kann. Wenn ich den Button "Reset" drücke, will ich, dass beide Regler (Slider) wieder auf ihre Ausgangsposition gehen. Da mit der QTPushButton aber nur ein Ereignis clicked() auslöst, ist das nicht kompatibel mit dem Slot setValue(int) von QSlider. Ergo wird es mit dem üblichen connect-Statement wohl nicht klappen.
Folgender Code klappt leider auch nicht:
Code:
if (resetButton->isDown() )
{
directionSlider->setValue(0);
}
Anbei mal der Code der main.cpp. die ui_test3.h wurde vom Qt Designer (v4) erzeugt.
Code:
#include "ui_test3.h"
#include <QApplication>
#include <QMainWindow>
class AppMainWindow : public QMainWindow, private Ui::MainWindow
{
public:
AppMainWindow();
};
AppMainWindow::AppMainWindow()
{
setupUi(this);
if(resetButton->isDown() == true )
{
directionSlider->setValue(0);
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
AppMainWindow window;
window.show();
return app.exec();
}
Für Vorschläge wäre ich langsam wirklich dankbar. Irgendwann gehts aufn Senkel, wenn man net draufkommt
/Edit:
Hat sich erledigt. Einerseits habe ich (notgedrungen) vergessen, in die Klassendeklaration Q_OBJECT zu schreiben. Wenn ich das tue, schmiert mir jedesmal der Compiler ab. Das Problem wiederum habe ich aber umgangen, indem ich den C++ Code sauber auf mehrere Dateien aufgeteilt hab.
Des Rätsels Lösung mit dem Reset ist trivial: mit nem IF gehts logischer Weise nicht, da die Bedingung ja nur einmal zur Laufzeit abgeprüft wird. Man muss ich also nen private slot definieren und den dann als Funktion der Klasse implementieren. Fertig.
Zuletzt bearbeitet: