Qt-Anwendung für iOS kompilieren

Wenn man versucht, eine mit Qt und der Qt Creator-IDE erstelle Anwendung in OSX für iPhone oder iPad zu kompilieren, erhält man folgende (verkürzte) Fehlermeldung beim Start der Anwendung im iOS-Simulator:

You are creating QApplication before calling UIApplicationMain.

Die Lösung für dieses Problem ist überraschend einfach (getestet mit Qt 5.3.1). Einfach den Code der “Main”-Funktion wie folgt ändern:

#if defined(Q_OS_IOS)
extern "C" int qtmn(int argc, char *argv[])
#else
int main(int argc, char *argv[])
#endif
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

Veröffentlicht unter iOS, Qt | Kommentare deaktiviert für Qt-Anwendung für iOS kompilieren

Qt: In Android per Touch-Geste scrollen

Wer mit Qt programmiert möchte auch, dass beim Kompilieren für Android die Touch-Gesten aktiviert werden – um zum Beispiel in einem Textfeld auf dem Tablet scrollen zu können. Dies erreicht man mit folgendem Programmtext im Konstruktor des Fensters:

#include <QScroller>
#if defined(Q_OS_ANDROID)
    QScroller::grabGesture(ui->mtv_plainTextEdit,QScroller::TouchGesture); 
#endif
Veröffentlicht unter Android, Linux, Qt | Kommentare deaktiviert für Qt: In Android per Touch-Geste scrollen

Qt – Android Smartphone verbinden

Um ein Android-Smartphone zum Testen von Programmen zu verwenden, die mit Qt entwickelt wurden, sind unter Linux folgende Schritte nötig:

1. Erstellen einer Datei /etc/udev/rules.d/51-android.rules mit folgendem Inhalt:

SUBSYSTEMS==”usb”, ATTRS{idVendor}==”hersteller_id″, ATTRS{idProduct}==”product_id″, SYMLINK+=”android_adb”, MODE=”0666″, OWNER=”username”

Hersteller-ID und Produkt-ID ermittelt man mit Hilfe von lsusb

2. Eingabe folgender Befehele:

sudo chmod 644 /etc/udev/rules.d/51-android.rules
sudo chown root /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

falls nötig, den Rechner neu starten und/oder das Android-Smartphone noch einmal aus- und anstecken.

3. Auf dem Android-Smartphone muss der Debug-Modus aktiviert sein und außerdem das Installieren von unbekannten Quellen erlaubt werden.

4. Das mit Qt geschriebene Programm für Android kompilieren und Ausführen – im Android Device Manager erscheint nun das Android-Smartphone als verbundenes Gerät (neben den virtuellen Smartphones, die zum Testen eingerichtet wurden) und man kann die Anwendung dort installieren und testen 🙂

Veröffentlicht unter Android, Linux, Qt | Kommentare deaktiviert für Qt – Android Smartphone verbinden

Qt – QProcess – mehrfachen Start eines Programms verhindern

In der Qt-Programmierung gibt es die Klasse QProcess zum starten externer Programme. Das Problem: es wird nicht kontrolliert, ob das externe Programm mehrfach gestartet wird oder nicht.

Der folgende Beispiel-Code prüft, ob das QProcess-Objekt gestartet ist und verhindert den mehrfachen Start:

//avoid multiple starts of external Process (example: special characters map)
QProcess p;
 bool p_started = false;

void Dialog::on_Button_clicked(){
 if(p.state() == QProcess::NotRunning) p_started = false;
 if(p_started == true) return;

#if defined(Q_OS_LINUX)
 p.start("kcharselect");
 #endif
 #if defined(Q_OS_WIN)
 p.start("charmap.exe");
 #endif

p_started = true;
 }
Veröffentlicht unter Qt | Kommentare deaktiviert für Qt – QProcess – mehrfachen Start eines Programms verhindern

StarOffice-Dateien öffnen

Man hat ja aus den 1990er-Jahren noch jede Menge Dateien im StarOffice-Format (sdw, sdc) auf dem Rechner. Das war bis LibreOffice 3.6 kein Problem. Doch seit LibreOffice 4.01 werden diese Binärformate nicht mehr unterstützt.

Einzige Lösungsmöglichkeit: In einer virtuellen Maschine ein altes LibreOffice 3.6 installieren und dann mit Datei – Assistenten – Umwandeln im neuen Format speichern.

Veröffentlicht unter Office | Kommentare deaktiviert für StarOffice-Dateien öffnen

Firefox gegen Google abdichten

Auch im freien Browser Firefox hat sich die Datenkrake Google tief eingenistet. Deshalb hier 3 Tipps, um seine Daten ein bisschen besser vor dem Zugriff von Google und Geheimdiensten zu schützen.

  • In der Schumaschinenverwaltung “Startpage” installieren und zur Standard-Suchmaschine machen (gibt’s über die AddOn-Suche von Firefox).
  • In der Konfiguration von Firefox (about:config) das “Safe Browsing” auf “false” stellen und damit abschalten (das bringt einem dann zwar keine Warnung mehr vor Spam- und Phishing-Seiten, dafür laufen die URL’s aber auch nicht mehr über die Google-Server).
  • und ebenfalls in der about:config sollte man den Wert für “keyword.URL” auf folgende Zeile setzen, damit die Auto-Vervollständigen-Funktion in der URL-Adresszeile ebenfalls nicht mehr über Google sondern über Startpage läuft:
    https://startpage.com/do/search?language=deutsch&cat=web&query=

Mit Dank an Telepolis-Autor Alexander Hammer und das Neue Deutschland für den Selbstversuch “PRISM break”

 

Veröffentlicht unter Datenschutz | Verschlagwortet mit , , | Kommentare deaktiviert für Firefox gegen Google abdichten

Nicht erschrecken, wenn das RAID nicht funktioniert

Meine Daten sichere ich auf zwei externen Festplatten, die ich zu einem RAID1 verbunden habe. und bevor ich das RAID mounte prüfe ich routinemäßig mit dem Befehl

# mdadm --detail /dev/md0

dessen Zustand. Neulich bekam ich dabei einen gewaltigen Schreck, denn unter anderem erhielt ich folgende Meldung:

 Update Time : Wed May  1 16:22:57 2013
          State : active, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync
       1       0        0        1      removed

Da ich aber keine der beiden Festplatten entfernt hatte befürchtete ich ein beschädigtes Backup. Doch eine kurze Suchmaschinenanfrage brachte die Lösung: nicht erschrecken, stattdessen das RAID neu zusammenbauen – mit folgenden Befehlen (samt den dazugehörigen Meldungen).

# mdadm -S /dev/md0
mdadm: stopped /dev/md0

# mdadm --assemble /dev/md0 /dev/sde1 /dev/sdf1
mdadm: /dev/md0 has been started with 2 drives.

Der erste Befehl stoppt das RAID, der zweite baut es mit den beiden Festplatten-Partitionen sde1 und sde2 wieder zusammen. Dass alles funktioniert sieht man dann wieder mit dem Befehl

# mdadm --detail /dev/md0

der unter anderem folgende beruhigende Nachricht auswirft:

    Update Time : Wed May  1 07:49:09 2013
          State : active 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : xxxxxxxxx
           UUID : xxxxxxxxx:xxxxxxxxxxx:xxxxxxxxxxx
         Events : 55628

    Number   Major   Minor   RaidDevice State
       0       8       65        0      active sync   /dev/sde1
       1       8       81        1      active sync   /dev/sdf1
Veröffentlicht unter Linux | Verschlagwortet mit , , , , | Kommentare deaktiviert für Nicht erschrecken, wenn das RAID nicht funktioniert

Android Handys unter Linux einbinden

Android-Handys können am USB-Anschluss als so genanntes MTP-Gerät angeschlossen werden. Um auf dieses Dateisystem zugreifen zu können, ist es nötig, die libmtp und die mtp-tools zu installieren.

Danach kann dann das Gerät mit folgendem Befehl eingehängt werden:

sudo mtpfs -o allow_other /mnt

Das Aushängen geschieht mit

fusermount -u /mnt
Veröffentlicht unter Linux | Verschlagwortet mit , , , | Kommentare deaktiviert für Android Handys unter Linux einbinden

VMwarePlayer: vmnet-Modul kompiliert nicht

Nach einem Update des VMware Players (bei mir auf 4.0.4) kompiliert unter 3.2.-Linux-Kerneln nicht. Unter Linux Mint / Ubuntu hilft dann folgendes:

Diesen Patch herunterladen.

Entpacken und die Datei patch-modules_3.2.0.sh mit einem Editor öffnen. In Zeile 8 dann die richtige VMware Player Version eintragen (bei mir statt 4.0.2 also 4.0.4) und speichern. Danach

sudo ./patch-modules_3.2.0.sh

Falls es hier zu einer Fehlermeldung kommt (“your modules have been patched already”) ist die versteckte Datei .patched im Verzeichnis /usr/lib/vmware/modules/source die wahrscheinlichste Ursache. Einfach löschen und das Skript neu durchlaufen lassen.

Veröffentlicht unter Linux | Kommentare deaktiviert für VMwarePlayer: vmnet-Modul kompiliert nicht

KMail-Fehlermeldungen

Ziemlich häufig gibt es nach dem Upgrade auf KDE 4.7 und höher in KMail2 die Fehlermeldung “Lokale Ordner das maildir “” für die sammlung ist ungültig”. Die Ursache ist, das in den Abrufeinstellungen für die akonadi-Resource (KMail-Einstellungen-Empfang) “Lokale Ordner” unter “Abrufeinstellungen das Häkchen “Bei manueller Prüfung mit einbeziehen” gesetzt ist. Entfernt man das Häkchen verschwinden die Fehlermeldungen.

Veröffentlicht unter Linux | Verschlagwortet mit , , | Kommentare deaktiviert für KMail-Fehlermeldungen