JavaS. per Knopf On/Off ; Zeit in MainWindow aktualisieren

Alles rund um die Programmierung mit Qt
Antworten
TheoRetisch
Beiträge: 5
Registriert: 5. Juli 2010 12:10

JavaS. per Knopf On/Off ; Zeit in MainWindow aktualisieren

Beitrag von TheoRetisch »

Hallo Liebe Com!
Ich habe gleich Zwei Fragen auf einmal...

Btw.: Beschäftige mich erst seit kurzem mit QT.

1. Ich möchte gerne mit einem Knopf JavaScript bzw. Java im QWebView Ein bzw. Ausschalten. Ich habe es schon mit Checkboxen , PushButtons und RadioButtons versucht. Jeweils auf "checked" geprüft und dann in den GlobalSettings von QWebView Java-Script true bzw. false gesetzt.
Leider ändert sich nichts. Muss ich WebView oder MainWindow aktualisieren? Oder läuft das ganz anders ab?

2. Ich möchte im MainWindow die aktuelle Uhrzeit angezeigt bekommen.
Momentan mache ich das so:

Code: Alles auswählen

    QTime time = QTime::currentTime();
    QString sTime = time.toString("HH:mm:ss");
    ui->label_2->setText(sTime);
Nur leider aktualisiert sich die Uhrzeit nicht. Auch mit einem update(); des MainWindows ändert sich rein garnichts. Wie muss ich das angehen?

MfG, Theo
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

zu 2.) update() ist überflüsig, du hast schon einen Timer laufen, der die Zeit aktualisiert? Der Code wird auch regelmäßig ausgeführt?
TheoRetisch
Beiträge: 5
Registriert: 5. Juli 2010 12:10

Beitrag von TheoRetisch »

Nein, habe ich nicht. Wie soll ein Timer etwas aktualisieren? Meines erachtens nach zählt dieser ja nur. Oder verseh ich mich da grad?
Wenn ich den Code zum anzeigen der Uhrzeit z.B. in eine while-Schleife packe, steigt lediglich meine CPU-Auslastung in den Himmel, aber das Programmfenster wird nicht geöffnet.
Wie würde man das denn mit einen "Timer" realisieren?

MfG, Theo
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

zu 1.) ein & ausschalten funktioniert einwandfrei, manchmal wäre ein reload() der Seite allerdings sinnvoll. Ein kurzer Beispielcode, der nicht funktionieren soll, wäre sinnvoll.

Hast du in deiner while-Schleife irgendjemanden die Chance gegeben, etwas neu zu zeichnen? Nein? Wie sollte dann etwas neu gezeichne werden?

Beschäftige dich mit QTimer und dem Event- & Signal-Slot-System von Qt.
TheoRetisch
Beiträge: 5
Registriert: 5. Juli 2010 12:10

Beitrag von TheoRetisch »

Ich habe nun mein letzteres Problem gelöst. Und zwar so:

Code: Alles auswählen

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(updateClock()));
timer->start(1000);

Code: Alles auswählen

void MainWindow::updateClock()
{
    QTime time = QTime::currentTime();
    QDate date = QDate::currentDate();
    QString sDate = date.toString("ddd. dd.MMM.yyyy");
    QString place = " | ";
    QString sTime = time.toString("HH:mm:ss");
    ui->label_2->setText(sDate+place+sTime);
}

Oder missbrauche ich da nun eine Funktion?

MfG, Theo
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Nein, warum? Aber mit QDateTime könnte man es kürzer schreiben.
TheoRetisch
Beiträge: 5
Registriert: 5. Juli 2010 12:10

Beitrag von TheoRetisch »

Und nun habe ich auch mein anderes Problem gelöst. Anscheinend wahr ich vorhin nur komplett durcheinander und habe es deswegen nicht gebacken bekommen.
So siehts nun aus:

Code: Alles auswählen

void MainWindow::javaScript()
{
    if(ui->pushButton_7->isChecked())
    {
        QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true);
        ui->pushButton_7->setText(QString("JavaScript On"));
    }
    else{
        QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, false);
        ui->pushButton_7->setText(QString("JavaScript Off"));
    }
}

Das selbe dann nochmal für Java und Flash.

Trotzalledem, danke für die Mühe.

MfG, Theo
Antworten