Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Greek
  4. Tichu Counter for Symbian
Forum Updated to NodeBB v4.3 + New Features

Tichu Counter for Symbian

Scheduled Pinned Locked Moved Greek
20 Posts 2 Posters 13.8k Views 1 Watching
  • 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.
  • V Offline
    V Offline
    VPellas
    wrote on last edited by
    #9

    ΥΓ: Θα μπορουσα να σε βοηθησω περισσοτερο αν ηξερα τι ακριβως θελεις να κανεις(Απλα ελληνικα… χωρις κωδικα… και μετα τον βλεπουμε και αυτον.)Δηλαδη:
    -Ξεκιναμε απο ενα MainWindow (το οποιο καλει αμεσως ενα διαλογο)
    -Ο διαλογος παιρνει μια τιμη και την επιστρεφει στo MainWindow για επεξεργασια(ή την επεξεργαζεται και αυτος πρωτα?)
    -Μετα το MainWindow τι επεξεργασια θελεις να κανει? κλπ

    • Νομίζω τώρα το εξήγησα και πάνω πριν τον κώδικα αλλά ας το ξαναπώ με λίγα λόγια :
      1-- Ο χρήστης πατάει το κουμπί Recount και εμφανίζεται το 2ο παράθυρο
      2-- Γράφει μια τιμή στο QLineEdit
      3-- Πατώντας το Done επιστρέφει στο 1ο παράθυρο
      4-- Πατώντας το Count η τιμή που έγραψε εμφανίζεται στο QLabel

    Τέλος ευχαριστώ και πάλι μόνο και μόνο που ασχολήθηκες και εσύ και για όποιον άλλον θέλει να ασχοληθεί. Τώρα σαν ερώτηση δική μου. Πως θα μπορέσω να δημιουργήσω αυτό το Dialog που όλοι μου λέτε , και πως θα μπορέσω να το κάνω να συμπεριφέρετε σαν την MainWindow2(που στην συγκεκριμένη περίπτωση είναι class QWidget)

    1 Reply Last reply
    0
    • K Offline
      K Offline
      koleygr
      wrote on last edited by
      #10

      Βασικα δεν ασχολήθηκα αρκετά ακόμα...
      και τώρα ετοιμαζομαι να πεσω για ύπνο.

      Λοιπον... αν έχεις το Qt Creator:
      Ξεκινας και φτιαχνεις project με το διάλογό σου
      (Μην μπεις στα signals/slots απλα βαλε δυο κουμπια και ενα label)
      Βέβαια νομιζω πως θα χρειαστεις ενα label για καθε ομαδα και ενα widjet
      επιλογεα της ομαδας ή κατι τετοιο αλλα δεν εχουμε φτασει ακομα εκει...

      Έπειτα... για να κατασκευασεις το διαλογο, πας απο το
      file->new file or project->Qt->Qt Designer Form Class
      και καπου εκει σου βγάζει το Dialog withowt buttons
      και μετα το κανεις add στο project.

      Σε βγαζει να δημιουργήσεις το διαλογο
      και εδω νομίζω πως πρεπει να βαλλεις και τα κουμπιά που θα γραφει ο χρήστης
      και αυτα που χρειαζεσαι απο το mainwindow2 που δειχνεις γιατι στην
      πραγματικοτητα θες σε αυτό το διάλογο να μπορει να γραψει ο χρηστης...
      δε νομιζω να θελεις ο διάλογος να ανοίγει καινουριο διαλογο για να γράψει ο χρηστης...
      μετα ο πρωτος(πρωιν mainwindow2) τι ρολο παιζει?

      Μετα, έχεις απλως να προσθεσεις(define) στο mainwindow.h το dialog.h
      και τις slots που χρειαζεσαι
      Έπειτα στο mainwindow.ccp κανεις τα connect...
      Τελος... μπαινεις στα connect και φτιαχνεις τον υπολοιπο κωδικα σου

      ΥΓ: θα δοκιμασω αυριο το βραδακι γιατι δε θα βρω χρονο νωριτερα
      καλη τυχη μεχρι τοτε

      Using:Qt Creator 2.4.1 under UBUNTU

      1 Reply Last reply
      0
      • K Offline
        K Offline
        koleygr
        wrote on last edited by
        #11

        Το δοκίμασα μεχρι να ανοίξει ο διάλογος..
        ο κώδικας που πρέπει να προσθεσεις είναι:

        στη mainwindow.h
        @#include "dialog.h"@
        και
        @
        private slots:
        void pB_clicked();@

        και στη mainwindow.cpp:
        αμεσως μετα το setupUi
        @
        connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(pB_clicked()));@
        και τη συνάρτηση:
        @void MainWindow::pB_clicked()
        {
        Dialog *mDialog= new Dialog();
        mDialog->setAttribute(Qt::WA_DeleteOnClose,true);

        mDialog->exec();
        

        }
        @

        Using:Qt Creator 2.4.1 under UBUNTU

        1 Reply Last reply
        0
        • V Offline
          V Offline
          VPellas
          wrote on last edited by
          #12

          Οκέι, μετέτρεψα όλο μου τον κώδικα, δηλαδή και τα 2 QWidgets που είχα κάνει σε QDialogs, και πάλι όμως δεν μπορώ να πάρω την τιμή από το 2ο παράθυρο... Αυτό που καταλαβαίνω τελικά είναι πως δεν έχει σημασία το αν είναι QWidget, QDialog ή οτιδήποτε, απλά κάπου το χάνω και δεν ξέρω που......

          Δείτε λίγο τους Νέους κώδικες σε 2 QDialog αυτή τη φορά:

          1 Reply Last reply
          0
          • V Offline
            V Offline
            VPellas
            wrote on last edited by
            #13

            MainWindow1.h
            @#ifndef MAINWINDOW1_H
            #define MAINWINDOW1_H
            #include <QDialog>
            #include <QPushButton>
            #include <mainwindow2.h>

            namespace Ui {
            class MainWindow1;
            }

            class MainWindow1 : public QDialog
            {
            Q_OBJECT

            public:
            explicit MainWindow1(QWidget *parent = 0);
            ~MainWindow1();

            public slots:
            void pB_clicked();
            void on_Count_clicked();
            void Proccess(int a);

            private:
            Ui::MainWindow1 *ui;
            class MainWindow2 *mMyNewWindow;
            };

            #endif // MAINWINDOW1_H
            @

            MainWindow1.cpp
            @#include "mainwindow1.h"
            #include "ui_mainwindow1.h"
            #include "mainwindow2.h"
            #include <QDialog>
            #include <QPushButton>

            MainWindow1::MainWindow1(QWidget *parent) :
            QDialog(parent),
            ui(new Ui::MainWindow1)
            {
            ui->setupUi(this);
            QObject::connect(ui->Record,SIGNAL(clicked()),this,SLOT(pB_clicked()));
            QObject::connect(ui->Count, SIGNAL( clicked() ), this, SLOT(on_Count_clicked()));
            }

            MainWindow1::~MainWindow1()
            {
            delete ui;
            }

            void MainWindow1::on_Count_clicked()
            {
            int number;
            MainWindow2 key2;
            key2.on_Done_clicked();
            }

            void MainWindow1::Proccess(int a)
            {
            ui->label->setNum(a);
            }

            void MainWindow::pB_clicked()
            {
            mMyNewWindow = new MainWindow2();
            mMyNewWindow->setAttribute(Qt::WA_DeleteOnClose,true);

            mMyNewWindow->exec(&#41;;
            

            }@

            Και τώρα αυτό που μένει είναι να συνδέσουμε και το 2ο QDialog με όνομα MainWindow2, oύτως ώστε να τερματίζει όταν πατάμε το κουμπί Done και να στέλνει την τιμή που εισήγαγε ο χρήστης. Ο τρόπος σου λειτουργεί μέχρι στιγμής

            1 Reply Last reply
            0
            • K Offline
              K Offline
              koleygr
              wrote on last edited by
              #14

              [quote author="VPellas" date="1365396062"]Οκέι, μετέτρεψα όλο μου τον κώδικα, δηλαδή και τα 2 QWidgets που είχα κάνει σε QDialogs, και πάλι όμως δεν μπορώ να πάρω την τιμή από το 2ο παράθυρο... Αυτό που καταλαβαίνω τελικά είναι πως δεν έχει σημασία το αν είναι QWidget, QDialog ή οτιδήποτε, απλά κάπου το χάνω και δεν ξέρω που......

              Δείτε λίγο τους Νέους κώδικες σε 2 QDialog αυτή τη φορά:
              [/quote]

              [quote author="VPellas" date="1365396724"]MainWindow1.h
              @#ifndef MAINWINDOW1_H
              #define MAINWINDOW1_H
              #include <QDialog>
              #include <QPushButton>
              #include <mainwindow2.h>

              namespace Ui {
              class MainWindow1;
              }

              class MainWindow1 : public QDialog
              {
              Q_OBJECT

              public:
              explicit MainWindow1(QWidget *parent = 0);
              ~MainWindow1();

              public slots:
              void pB_clicked();
              void on_Count_clicked();
              void Proccess(int a);

              private:
              Ui::MainWindow1 *ui;
              class MainWindow2 *mMyNewWindow;
              };

              #endif // MAINWINDOW1_H
              @

              MainWindow1.cpp
              @#include "mainwindow1.h"
              #include "ui_mainwindow1.h"
              #include "mainwindow2.h"
              #include <QDialog>
              #include <QPushButton>

              MainWindow1::MainWindow1(QWidget *parent) :
              QDialog(parent),
              ui(new Ui::MainWindow1)
              {
              ui->setupUi(this);
              QObject::connect(ui->Record,SIGNAL(clicked()),this,SLOT(pB_clicked()));
              QObject::connect(ui->Count, SIGNAL( clicked() ), this, SLOT(on_Count_clicked()));
              }

              MainWindow1::~MainWindow1()
              {
              delete ui;
              }

              void MainWindow1::on_Count_clicked()
              {
              int number;
              MainWindow2 key2;
              key2.on_Done_clicked();
              }

              void MainWindow1::Proccess(int a)
              {
              ui->label->setNum(a);
              }

              void MainWindow::pB_clicked()
              {
              mMyNewWindow = new MainWindow2();
              mMyNewWindow->setAttribute(Qt::WA_DeleteOnClose,true);

              mMyNewWindow->exec(&#41;;
              

              }@

              Και τώρα αυτό που μένει είναι να συνδέσουμε και το 2ο QDialog με όνομα MainWindow2, oύτως ώστε να τερματίζει όταν πατάμε το κουμπί Done και να στέλνει την τιμή που εισήγαγε ο χρήστης. Ο τρόπος σου λειτουργεί μέχρι στιγμής[/quote]

              Using:Qt Creator 2.4.1 under UBUNTU

              1 Reply Last reply
              0
              • K Offline
                K Offline
                koleygr
                wrote on last edited by
                #15

                [quote author="koleygr" date="1365414525"]
                [quote author="VPellas" date="1365396062"]Οκέι, μετέτρεψα όλο μου τον κώδικα, δηλαδή και τα 2 QWidgets που είχα κάνει σε QDialogs, και πάλι όμως δεν μπορώ να πάρω την τιμή από το 2ο παράθυρο... Αυτό που καταλαβαίνω τελικά είναι πως δεν έχει σημασία το αν είναι QWidget, QDialog ή οτιδήποτε, απλά κάπου το χάνω και δεν ξέρω που......

                Δείτε λίγο τους Νέους κώδικες σε 2 QDialog αυτή τη φορά:
                [/quote]

                Όπα! και τους δύο ε?
                Sorry... δικο μου λαθος... To πρώτο πρεπει να μεινει MainWindow....
                τυπογραφικο ηταν
                (Μαλλον πως θα χρησιμοποιήσουμε το μενου του αργοτερα...)

                Ξανα κανε το πρώτο MainWindow... και προσπαθησε να μην φτιαξεις μονος σου
                κανενα cinnect μεσα απο το desighn...
                μόνο το πρωτο connect που σου είπα εγω.

                ΒΑΣΙΚΟ:
                Έχεις το Qt Creator?
                Αν ναι... πώς ξεκινάς? Τί ειδους project δημιουργεις?
                Είχα καταλαβει πως ειναι αυτο που λεει για κινητά... αλλα εμενα μου το
                έβγαλε αλλιώς.

                Επισης αυτο το on_pbClicked() νομιζω πως ειναι το παλιο σου on_Record_Clickd...
                ονομασε το οπως θελεις εσυ που να το βρισκεις ευκολα

                Τέλος χρειαζομαι τον source της QInputDialog και δεν τον βρισκω ευκολα.
                Είδα σε προηγούμενο ποστ σου πως τον εχεις βρει..
                πες μου που ειναι ή ανεβασε τον εδω.

                ΥΓ: Τελικα θα φτιάξεις και 2ο Dialog? εκεινο με τα κουμπακια?

                ΥΓ2: Φευγω τωρα... Το βραδακι παλι

                Using:Qt Creator 2.4.1 under UBUNTU

                1 Reply Last reply
                0
                • V Offline
                  V Offline
                  VPellas
                  wrote on last edited by
                  #16

                  Κακά τα ψέματα ο προγραμματισμός είναι διαδραστικός... Αυτό που προτείνω είναι να το λύσουμε μέσω Skype ή κάτι τέτοιο, και αφού το λύσουμε(και είσαι διατεθιμένος βέβαια) να ανεβάσω εδώ την "απάντηση" στο ερώτημα μιας και δεν υπάρχει σε κανένα φόρουμ κάτι παρόμοιο(έχω ψάξει σχεδόν τα πάντα).

                  1 Reply Last reply
                  0
                  • V Offline
                    V Offline
                    VPellas
                    wrote on last edited by
                    #17

                    Θα σου έχω ετοιμάσει τα MainWindow (class QWidget) και Dialog(class QDialog) εγώ οπότε το μόνο που θα έχουμε να κάνουμε είναι εντολή και τεστ. Πιστεύω θα βγει άκρη πολύ πιο γρήγορα από το να ανταλάσσουμε post στο φόρουμ

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      koleygr
                      wrote on last edited by
                      #18

                      Λοιπον,
                      αν ενδιαφέρεται και κανεις αλλος για το προβλημα που λεγαμε,
                      η λύση είναι πολύ πιο απλη:
                      Μετα απο συνεργασια με τον VPellas, αποφασίσαμε το εξής απλό.
                      Αντι να φτιάξουμε καινούρια Widjets στο πρότυπα του QInputlDialog,
                      περάσαμε την τιμη που θελαμε σαν external int.

                      Αυτος ο τροπος έχω διαβάσει πως δεν ειναι και ο καλύτερος απο άποψη
                      προγραμματισμου. Οι external μεταβλητες, θα επρεπε να αποφευγονται.
                      Εγώ παντως τις αγάπησα....

                      ΥΓ: Λογικά ο VPellas θα ανεβάσει αυτες τις μέρες και τη λύση στο πρόβλημα
                      για οποιονδηποτε ενδιαφερεται.

                      Using:Qt Creator 2.4.1 under UBUNTU

                      1 Reply Last reply
                      0
                      • V Offline
                        V Offline
                        VPellas
                        wrote on last edited by
                        #19

                        Λοιπόν, λόγω υποχρεώσεων καθυστέρησα να γράψω την απάντηση αλλά εδώ είναι. Μετά από συνεργασία με τον koleygr δώσαμε λύση σε ένα πρόβλημα που προσωπικά μου πήρε πολλές ώρες προσπάθειας και διαβάσματος... Συγκεκριμένα το πρόβλημα είναι το πως παίρνουμε τιμές από ένα QDialog σε μία QMainWindow(γίνεται και με άλλα π.χ. QWidgets αλλά με αυτά το καταφέραμε, αυτό θα παραθέσω.)

                        Ας δούμε λίγο τους κώδικες:
                        dialog.h
                        @#ifndef DIALOG_H
                        #define DIALOG_H
                        #include <QDialog>
                        namespace Ui {
                        class Dialog;
                        }
                        class Dialog : public QDialog
                        {
                        Q_OBJECT
                        public:
                        explicit Dialog(QWidget *parent = 0);
                        ~Dialog();
                        private:
                        Ui::Dialog *ui;
                        private slots:
                        void closeWindow();
                        };
                        #endif // DIALOG_H@

                        MainWindow.h
                        @#ifndef MAINWINDOW_H
                        #define MAINWINDOW_H
                        #include <QMainWindow>
                        namespace Ui {
                        class MainWindow;
                        }

                        class MainWindow : public QMainWindow
                        {
                        Q_OBJECT
                        public:
                        explicit MainWindow(QWidget *parent = 0);
                        ~MainWindow();
                        private:
                        Ui::MainWindow *ui;
                        private slots:
                        void pushButtonClicked();
                        };
                        #endif // MAINWINDOW_H@

                        Dialog.cpp

                        @#include "dialog.h"
                        #include "ui_dialog.h"
                        #include <mainwindow.h>
                        //dhlwnoume edw thn metavlhth c; (eksoteriki)
                        int c;
                        Dialog::Dialog(QWidget *parent) :
                        QDialog(parent),
                        ui(new Ui::Dialog)
                        {
                        ui->setupUi(this);
                        connect(ui->, SIGNAL( clicked() ), this, SLOT(closeWindow()));
                        }

                        Dialog::~Dialog()
                        {
                        delete ui;
                        }
                        void Dialog::closeWindow()
                        {
                        QString mystring1(ui->lineEdit->text());
                        c = mystring1.toInt();
                        ui->label->setNum(c);
                        this->reject();
                        }@

                        MainWindow.cpp

                        @#include "mainwindow.h"
                        #include "ui_mainwindow.h"
                        #include "dialog.h"
                        //kai edw kanoume tin metavlhth c extern gia na mporei na xrhsimopoih8ei
                        extern int c;
                        MainWindow::MainWindow(QWidget *parent) :
                        QMainWindow(parent),
                        ui(new Ui::MainWindow)
                        {
                        ui->setupUi(this);
                        connect(ui->pushButton, SIGNAL( clicked() ), this, SLOT(pushButtonClicked()));
                        }

                        MainWindow::~MainWindow()
                        {
                        delete ui;
                        }

                        void MainWindow::pushButtonClicked()
                        {
                        QString mystring(ui->Screen->text());
                        int k = mystring.toInt();
                        Dialog *dialog= new Dialog();
                        dialog->exec();
                        ui->Screen->setNum(k+c);
                        }@

                        1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          koleygr
                          wrote on last edited by
                          #20

                          Μια παρατήρηση στον παραπάνω κώδικα, είναι πως αν θελουμε να δώσουμε αρχική
                          τιμη στην exterrnal μεταβλητη μας, πρεπει να το κάνουμε μετά τον ορισμό της
                          για να μην μας βγάζει warning o compiler.

                          Επίσης παρατήρησα πως και στο Dialog.cpp του
                          παραπάνω κώδικα, θα ήταν καλύτερα να δηλώσουμε την c
                          ως extern int c και όχι απλώς Int c.

                          Τέλος, αν κάποιος δε θελει να χρησιμοποιήσει external μεταβλητες
                          στο πρόγραμμα του, μπορεί να ορίσει μια public function μεσα στο Dialog.cpp
                          και να την καλέσει απο το MainWindow αμεσως μετα που θα τρέξει το διάλογο
                          (Ο κώδικας είνα διαθέσιμος σε οποιον τον ζητήσει)

                          Using:Qt Creator 2.4.1 under UBUNTU

                          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