Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Greek
  4. Global shortcuts

Global shortcuts

Scheduled Pinned Locked Moved Greek
10 Posts 2 Posters 6.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    gadlol
    wrote on last edited by
    #1

    Ρε παιδιά υπάρχει περίπτωση να βάλουνε Global shortcuts;

    https://bugreports.qt-project.org/browse/QTBUG-5183

    Εσείς χρειάζεστε Global shortcuts;

    hello programming

    1 Reply Last reply
    0
    • A Offline
      A Offline
      alexandros
      wrote on last edited by
      #2

      Και βέβαια τα χρειαζόμαστε...

      Αν το ψάξεις γίνεται με 3rd party Qt library, αλλά βρήκα (για linux τουλάχιστον) τρόπο να το κάνω με libkeybinder.

      1 Reply Last reply
      0
      • G Offline
        G Offline
        gadlol
        wrote on last edited by
        #3

        Έχεις κανα παράδειγμα qt με libkeybinder;

        Δημιουργώ χρησιμοποιώντας linux mint 14, τελευταία έκδοση qt και qt creator

        hello programming

        1 Reply Last reply
        0
        • A Offline
          A Offline
          alexandros
          wrote on last edited by
          #4

          Τσέκαρε τον κώδικα του Wallch που φτιάχνω με ένα φίλο αυτή τη στιγμή

          https://code.launchpad.net/~wallch/wallpaper-changer/trunk

          Τον παίρνεις είτε με
          @bzr branch lp:wallpaper-changer@
          είτε από το tarball:
          http://bazaar.launchpad.net/~wallch/wallpaper-changer/trunk/tarball/78

          Ψάξε για "keybinder" μέσα στον κώδικα και θα βρεις πώς χρησιμοποιείται. Κυρίως στα αρχεία mainwindow/preferences.cpp

          Αλλά θα βρεις και στο web παραδείγματα, σίγουρα.

          1 Reply Last reply
          0
          • G Offline
            G Offline
            gadlol
            wrote on last edited by
            #5

            Οκ, σε ευχαριστώ αδερφέ....

            hello programming

            1 Reply Last reply
            0
            • A Offline
              A Offline
              alexandros
              wrote on last edited by
              #6

              Anytime!

              Αν δεν το βρεις πες μου να σου γράψω εδώ ολοκληρωμένο παράδειγμα χρήσης του.

              1 Reply Last reply
              0
              • G Offline
                G Offline
                gadlol
                wrote on last edited by
                #7

                το preferences.php κάνει include to keybinder.h στη γραμμ 29, αλλά δεν υπάρχει τέτοιο αρχείο, δεν μου το βρίσκει...

                Ποια έκδοση του libkeybinder χρησιμοποιείς;
                Εγκατέστησα το libkeybinder-3.0-0

                Αν μπορείς να γράψεις ένα απλό παράδειγμα χρήσης του, θα σου είμαι υπόχρεος...

                hello programming

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  alexandros
                  wrote on last edited by
                  #8

                  Όταν χρησιμοποιείς 3rd party βιβλιοθήκες στα linux να κάνεις τα εξής:

                  1. Κατεβάζεις και εγκαθιστάς το -dev πακέτο (εδώ libkeybinder-dev)
                  2. Βάζεις την dependency στο .pro αρχείο σου, μέσω του PKGCONFIG (π.χ.

                  CONFIG += link_pkgconfig
                  PKGCONFIG += keybinder

                  όπου (εγώ τουλάχιστον) για να βρω τι θέλει το pkgconfig για να κάνει το linking (εδώ θέλει τη λέξη keybinder) τρέχω σε κονσόλα

                  @pkgconfig --list-all | grep "something"@

                  Για παράδειγμα:

                  @alex@MaD-pc:~$ pkg-config --list-all | grep "keybinder"
                  keybinder keybinder - Register global keyboard shortcuts@

                  Αυτό είναι σημαντικό βήμα γιατί θα μπορούσε να ήταν keybinder-1.0 ή libkeybinder και δεν μπορείς να ξέρεις ακριβώς από πριν.
                  )

                  Τώρα, έχοντας κάνει τα 2 πάνω βήματα, στον κώδικά σου αρκεί να κάνεις τα εξής:

                  @#include "keybinder.h"

                  ...

                  keybinder_init();
                  //ΓΙΑ ΝΑ ΚΑΝΕΙΣ BIND ΕΝΑ SHORTCUT
                  keybinder_bind(SOME_SHORTCUT.toLocal8Bit().data(), handler, NULL)
                  //ΓΙΑ ΝΑ ΤΟ ΒΓΑΛΕΙΣ ΜΕΤΑ
                  keybinder_unbind(SOME_SHORTCUT.toLocal8Bit().data(), handler);
                  //όπου handler μπορεί να είναι μια κενή συνάρτηση του τύπου
                  void handler (const char *, void *)
                  {
                  }@

                  Το SOME_SHORTCUT είναι QString. Το θέμα που προέκυψε σε μένα ήταν το τι τιμές μπορεί να πάρει έτσι ώστε να το αναγνωρίσει o keybinder. Δηλ. αν του δώσεις σαν QString το "DEN KSERW TI MOU GINETAI" δεν νομίζω να μπορέσει να κάνει bind το shortcut, ενώ συγκεκριμένα πράγματα, όπως το "<Alt><Shift>G" δουλεύουν (άλλο παράδειγμα string που θα δούλευε εδώ: "εδώ":http://i.imgur.com/dOvWW6n.png )

                  Ο handler είναι η συνάρτηση που τρέχει όταν καλεστεί το αντίστοιχο shortcut. Δεν πρέπει να είναι μέλος κάποιας κλάσης. Αν χρειάζεσαι access από κει κάποια άλλη συνάρτηση κάποιας κλάσης, κάνε file-global pointer της κλάσης και κάλεσε από αυτόν τον pointer ότι χρειάζεσαι. Αυτό έχουμε κάνει στο mainwindow.cpp με τη συνάρτηση nextKeySignal.

                  Εδώ έχω μια λίστα με την αντιστοιχία του τρόπου που ο Qt βλέπει τα κουμπιά με τον τρόπο που ο keybinder τα βλέπει (τον κώδικα τον πήρα από το preferences.cpp):

                  http://tny.cz/ceae3218

                  1 Reply Last reply
                  0
                  • G Offline
                    G Offline
                    gadlol
                    wrote on last edited by
                    #9

                    Πωωω ρε φίλε, είσαι άρχοντας....

                    hello programming

                    1 Reply Last reply
                    0
                    • A Offline
                      A Offline
                      alexandros
                      wrote on last edited by
                      #10

                      Έκανα update την απάντησή μου για να εξηγήσω τον handler.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved