Guten Tag,
ich arbeite gerade an einem QT-Projekt, was mir mithilfe des Buches QT4 - GUI Entwicklung mit C++ eigentlich gut gelingt. Ich stoße nun jedoch auf 2 Probleme, die ich wohl beide nicht selbst lösen kann.
1. QString::fromUtf8
In meinem Projekt muss ich oft z.B. eine Url als QString speichern und will diese dann einem StyleSheet übergeben.
also beispielsweise:
QString str = "C:/Test/bla.jpg";
Das Format für stylesheets ist ja jetzt eigentlich
setStyleSheet(QString::fromUtf8(str));
ich übergebe aber jedoch einen QString und keinen char*, habe zum Test also einfach diese Umwandlung weggelassen und
setStyleSheet(str);
aufgerufen, was aber auch funktioniert. Da ich mich mit den Formaten nicht wirklich auskenne wollte ich nun nachfragen, was dieses fromUtf8() überhaupt bewirkt und wann ich es brauche.
2. Tastatureingabe für Pfeile überschreiben
Ich habe ein Menu vom Typ Widget, in dem QPushButtons im Kreis angeordnet sind. wenn ich nun die Taste A drücke, dreht sich der Kreis um ein Element nach Links, sonst nach Rechts. ausserdem ändert sich der Focus auf den nächsten Button. Das klappt alles super. Wenn ich jetzt aber statt A Key_Left benutzen will, wird nur noch der Focus des Buttons auf den nächsten gelegt, da diese Funktion für die Pfeiltasten wohl schon vordefiniert ist. Habe schon einige sachen mit dem eventFilter ausprobiert, hat alles nichts gebracht. Ist es überhaupt möglich die Pfeiltasten in keypressed zu verwenden?
ich würde mich über Antworten zu beiden Themen sehr freuen!
QString::fromUtf8 / keyPressed für Pfeile
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Wenn ich das richtig verstanden habe, brauche ich einen QString dann nicht merh zu konvertieren? Da hatte ich wohl einen Denkfehler, danke dafür 
Zur Tastaturabfrage:
Wenn ich mit dem Debugger durchgeh, seh ich aber dass er bei Pfeil-Tastendruck überhaupt nicht in dieses Event geht?
als 2. Möglichkeit habe ich dann versucht einen Eventfilter zu installieren:
...aber ohne Erfolg. Was mache ich falsch? 
Zur Tastaturabfrage:
Code: Alles auswählen
void Menu::keyPressEvent(QKeyEvent *event){
switch( event->key() ){
case Qt::Key_Left: align(2);
break;
case Qt::Key_A: align(2);
break;
default: break;
}
QWidget::keyPressEvent(event);
}als 2. Möglichkeit habe ich dann versucht einen Eventfilter zu installieren:
Code: Alles auswählen
bool Menu::eventFilter(QObject* object, QEvent* event){
if (event->type() == QEvent::KeyPress){
QKeyEvent* keyEvent = static_cast<QKeyEvent *>(event);
if (keyEvent->key()==Qt::Key_Left){
keyEvent->ignore();
this->align(2);
return false;
}
}
return QWidget::eventFilter(object,event);
}