Seite 1 von 1

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

Verfasst: 5. Juli 2010 21:11
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

Verfasst: 5. Juli 2010 21:46
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?

Verfasst: 5. Juli 2010 21:53
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

Verfasst: 5. Juli 2010 22:05
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.

Verfasst: 5. Juli 2010 22:11
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

Verfasst: 5. Juli 2010 22:23
von upsala
Nein, warum? Aber mit QDateTime könnte man es kürzer schreiben.

Verfasst: 5. Juli 2010 22:44
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