Προς το περιεχόμενο

Qt σχεδίαση γραμμών σε σχέση με τη θέση του ποντικιού


karabouzouk...

Προτεινόμενες αναρτήσεις

Eγώ δεν μπορώ να το τρέξω διότι, όπως σου είπα πριν καιρό, στα windows βλέπω μια μαύρη οθόνη.

Μόνον ο δείκτης του ποντικιού ήταν διαφανής.

 

Τι εννοείς όταν λες ότι δεν δουλεύει για περισσότερες γραμμές ;

Ότι οι ευθείες που προκύπτουν μετά την πρώτη ανάκλαση δεν ανακλώνται σωστά στους άλλους τοίχους ;

 

-

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 73
  • Δημ.
  • Τελ. απάντηση

Eγώ δεν μπορώ να το τρέξω διότι, όπως σου είπα πριν καιρό, στα windows βλέπω μια μαύρη οθόνη.

Μόνον ο δείκτης του ποντικιού ήταν διαφανής.

 

Τι εννοείς όταν λες ότι δεν δουλεύει για περισσότερες γραμμές ;

Ότι οι ευθείες που προκύπτουν μετά την πρώτη ανάκλαση δεν ανακλώνται σωστά στους άλλους τοίχους ;

 

-

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δοκίμασε αν θες να κάνεις σχόλιο την εντολή w1.setAttribute(Qt::WA_TranslucentBackground); στη main..

είναι αυτή που κάνει το παράθυρο διάφανο(που δεν μας ενδιαφέρει τώρα) μάλλον αυτή θα κάνει το πρόβλημα..

 

Τι εννοείς όταν λες ότι δεν δουλεύει για περισσότερες γραμμές ;

Ότι οι ευθείες που προκύπτουν μετά την πρώτη ανάκλαση δεν ανακλώνται σωστά στους άλλους τοίχους ;

Όχι η ανάκλαση γίνεται σωστά αλλά για κάποιο λόγο σε μερικές περιοχές καθώς κουνάω το ποντίκι δεν σχεδιάζονται οι γραμμές εκτός από αυτή που ξεκινάει από το αρχικό σημείο προς τον κέρσορα.

Κάτι δεν κάνω σωστά εκεί που τις περνάω στη λίστα υποψιάζομαι..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δοκίμασε αν θες να κάνεις σχόλιο την εντολή w1.setAttribute(Qt::WA_TranslucentBackground); στη main..

είναι αυτή που κάνει το παράθυρο διάφανο(που δεν μας ενδιαφέρει τώρα) μάλλον αυτή θα κάνει το πρόβλημα..

 

Τι εννοείς όταν λες ότι δεν δουλεύει για περισσότερες γραμμές ;

Ότι οι ευθείες που προκύπτουν μετά την πρώτη ανάκλαση δεν ανακλώνται σωστά στους άλλους τοίχους ;

Όχι η ανάκλαση γίνεται σωστά αλλά για κάποιο λόγο σε μερικές περιοχές καθώς κουνάω το ποντίκι δεν σχεδιάζονται οι γραμμές εκτός από αυτή που ξεκινάει από το αρχικό σημείο προς τον κέρσορα.

Κάτι δεν κάνω σωστά εκεί που τις περνάω στη λίστα υποψιάζομαι..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με αυτό τον τρόπο που είπες δεν το έκανες..?

αυτήν τη φορά όχι

υπολογίζω την γωνία πρόσπτωσης (α) ως διαφορά ευθείας-τοίχου(β) και ακτίνας (γ)

βρίσκω το σημείο τομής προσπίπτουσας και τοίχου α=β-γ

και απο αυτό σχεδιάζω μιά ευθεία με γωνία (δ) ίση με την γωνία του τοίχου συν την γωνία πρόσπτωσης δ=β+α

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Με αυτό τον τρόπο που είπες δεν το έκανες..?

αυτήν τη φορά όχι

υπολογίζω την γωνία πρόσπτωσης (α) ως διαφορά ευθείας-τοίχου(β) και ακτίνας (γ)

βρίσκω το σημείο τομής προσπίπτουσας και τοίχου α=β-γ

και απο αυτό σχεδιάζω μιά ευθεία με γωνία (δ) ίση με την γωνία του τοίχου συν την γωνία πρόσπτωσης δ=β+α

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

αυτήν τη φορά όχι

υπολογίζω την γωνία πρόσπτωσης (α) ως διαφορά ευθείας-τοίχου(β) και ακτίνας (γ)

βρίσκω το σημείο τομής προσπίπτουσας και τοίχου α=β-γ

και απο αυτό σχεδιάζω μιά ευθεία με γωνία (δ) ίση με την γωνία του τοίχου συν την γωνία πρόσπτωσης δ=β+α

 

.

 

ena proxeiro sxhma (to poio proxeiro pou mporeis na kaneis) tha vohthouse polu..! Gia na katalavw apo pou metras tis gvnies..

 

(suggnwmh gia ton trwpo grafhs alla o upologisths pou eimai den exei ellhnika kai den paizei na tou ta perasw gia ena munhma..!)

 

 

γωνία πρόσπτωσης

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

αυτήν τη φορά όχι

υπολογίζω την γωνία πρόσπτωσης (α) ως διαφορά ευθείας-τοίχου(β) και ακτίνας (γ)

βρίσκω το σημείο τομής προσπίπτουσας και τοίχου α=β-γ

και απο αυτό σχεδιάζω μιά ευθεία με γωνία (δ) ίση με την γωνία του τοίχου συν την γωνία πρόσπτωσης δ=β+α

 

.

 

ena proxeiro sxhma (to poio proxeiro pou mporeis na kaneis) tha vohthouse polu..! Gia na katalavw apo pou metras tis gvnies..

 

(suggnwmh gia ton trwpo grafhs alla o upologisths pou eimai den exei ellhnika kai den paizei na tou ta perasw gia ena munhma..!)

 

 

γωνία πρόσπτωσης

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

παραθέτω ένα screenshot

απο το gtroza-cad ! :o

 

σβύσε το .txt απο το karabouzouk5.pdf.txt

είναι pdf κανονικο

με την ps2pdf

 

όλες οι γωνίες απο το 0 (3ηωρα)

προσοχή στο ποιό ειναι το x1,y1 x2,y2 για τις ευθείες σε σχέση με την γωνία

χρησιμοποίησα την atan2(dy,dx)=>γωνία σε ακτίνια

 

τελικά

η γωνία της ευθείας ανάκλασης ως προς την οριζόντια

είναι ίση με τη γωνία της ευθείας πρόσπτωσης ως προς την οριζόντια

συν 2 φορές την γωνία πρόσπτωσης (γωνία ευθείας με τοίχο)

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

παραθέτω ένα screenshot

απο το gtroza-cad ! :o

 

σβύσε το .txt απο το karabouzouk5.pdf.txt

είναι pdf κανονικο

με την ps2pdf

 

όλες οι γωνίες απο το 0 (3ηωρα)

προσοχή στο ποιό ειναι το x1,y1 x2,y2 για τις ευθείες σε σχέση με την γωνία

χρησιμοποίησα την atan2(dy,dx)=>γωνία σε ακτίνια

 

τελικά

η γωνία της ευθείας ανάκλασης ως προς την οριζόντια

είναι ίση με τη γωνία της ευθείας πρόσπτωσης ως προς την οριζόντια

συν 2 φορές την γωνία πρόσπτωσης (γωνία ευθείας με τοίχο)

 

.

post-36682-129063131212_thumb.jpg

karabouzouk5.pdf.txt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ο κώδικας διορθώθηκε και δουλεύει τέλεια..

Απλά μένουν να προγραμματιστούν διάφορες ευκολίες για τον ορισμό των τοίχων κλπ... Κατά τα άλλα αν αυτοί οριστούν στον κώδικα χειροκίνητα λειτουργούν κανονικότατα.

Το λάθος που είχε ο προηγούμενος κώδικα ήταν ότι η γραμμή

minraylength = maxlength; που αρχικοποιεί την απόσταση από τοίχο στο μέγιστο είχε ξεμείνει έξω από τη for που υπολογίζει περισσότερες ακτίνες...

Τέλος πάντων ο κώδικας..

 

>#include <QtGui>

class MyWidget : public QWidget
{
public:
   MyWidget();

private:
   QList <QLineF> walls;
   QList <QLineF> reflexingLines;
   QLineF tempLine;
   int repainttimer/*time between refreshes*/, refreshrate/*in Hz*/, timerID, maxReflexingLines;
   int reflexingLineCount, reflexingwall, prevreflexingwall;
   QPointF cursorpos, startpos;
   QPointF intersectionpoint, tempintersectionpoint;
   double maxlength, minraylength;
   bool clickThroughWindowFlag, statsFlag;


protected:
   void paintEvent(QPaintEvent *);
   void timerEvent(QTimerEvent *);
   void keyPressEvent(QKeyEvent *);
   void resizeEvent(QResizeEvent *);
   //bool event(QEvent *);
};


MyWidget::MyWidget()
{
   refreshrate = 40;
   repainttimer = 1000/refreshrate;
   timerID = startTimer(repainttimer);

   maxReflexingLines = 3;
   
   startpos = QPoint(0, 0);
   clickThroughWindowFlag = false;
   statsFlag = true;

   walls << QLineF(rect().topRight(), rect().bottomRight());
   walls << QLineF(rect().bottomRight(), rect().bottomLeft());
   walls << QLineF(rect().bottomLeft(), rect().topLeft());
   walls << QLineF(rect().topLeft(), rect().topRight());
   
}

void MyWidget::resizeEvent(QResizeEvent *){
   walls.replace(0, QLineF(rect().topRight(), rect().bottomRight()));
   walls.replace(1, QLineF(rect().bottomRight(), rect().bottomLeft()));
   walls.replace(2, QLineF(rect().bottomLeft(), rect().topLeft()));
   walls.replace(3, QLineF(rect().topLeft(), rect().topRight()));

   maxlength = rect().width() + rect().height();
}


void MyWidget::keyPressEvent(QKeyEvent *keyevent){

   if(keyevent->key()==(Qt::Key_F)){
       startpos = cursorpos;
   }

   if(keyevent->key() == Qt::Key_Up){
       maxReflexingLines++;
   }

   if(keyevent->key() == Qt::Key_Down){
       if(maxReflexingLines > 1){
           maxReflexingLines--;
       }
   }

   if(keyevent->key() == Qt::Key_V){
       walls << QLineF(cursorpos.x(), rect().top(), cursorpos.x(), rect().bottom());
   }

   if(keyevent->key() == Qt::Key_H){
       walls << QLineF(rect().left(), cursorpos.y(), rect().right(), cursorpos.y());
   }

   if(keyevent->key() == Qt::Key_Escape){
       exit(0);
   }

   if(keyevent->key() == Qt::Key_C){
       for(int i = walls.size()-1; i>3; i--){
           walls.removeAt(i);
       }
   }

   if(keyevent->key()==(Qt::Key_Space)){
       clickThroughWindowFlag = !clickThroughWindowFlag;
   }

   if(keyevent->key()==(Qt::Key_S)){
       statsFlag = !statsFlag;
   }

   //increase refresh rate an restart timer.
   if(keyevent->key()==(Qt::Key_M)){
       refreshrate+=1;
       repainttimer = 1000/refreshrate;
       killTimer(timerID);
       timerID = startTimer(repainttimer);
   }

   //Decrease refresh rate and restart timer.
   if(keyevent->key()==(Qt::Key_L)){
       if (refreshrate > 1) refreshrate-=1;

       repainttimer = 1000/refreshrate;
       killTimer(timerID);
       timerID = startTimer(repainttimer);
   }
   update();
}

//bool event(QEvent *){
//
//    return false;
//}


void MyWidget::timerEvent(QTimerEvent *){
   QLineF::IntersectType interType;
   if(mapFromGlobal(QCursor::pos()) != cursorpos){

     cursorpos = mapFromGlobal(QCursor::pos());
     reflexingLines.clear();
     reflexingLines << QLineF(startpos, cursorpos);
     reflexingLines[0].setLength(maxlength);

     prevreflexingwall = -1;
     for (reflexingLineCount=0; reflexingLineCount < maxReflexingLines; reflexingLineCount++){
         minraylength = maxlength;
         for(int i=0; i<walls.size(); i++){
             if(i != prevreflexingwall){
                 interType = reflexingLines.at(reflexingLineCount).intersect(walls.at(i), &tempintersectionpoint);
                 if (interType == 1){
                     if (QLineF(reflexingLines.at(reflexingLineCount).p1(), tempintersectionpoint).length() < minraylength &&
                         QLineF(reflexingLines.at(reflexingLineCount).p1(), tempintersectionpoint).length() != 0){
                         minraylength = QLineF(reflexingLines.at(reflexingLineCount).p1(), tempintersectionpoint).length();
                         intersectionpoint = tempintersectionpoint;
                         reflexingwall = i;
                     }
                 }
             }
         }
         prevreflexingwall = reflexingwall;
         reflexingLines[reflexingLineCount].setP2(intersectionpoint);

         reflexingLines.append(QLineF(intersectionpoint.x(), intersectionpoint.y(), 0, 0));
         reflexingLines.last().setAngle(walls[reflexingwall].angle() + reflexingLines[reflexingLineCount].angleTo(walls[reflexingwall]));
         reflexingLines.last().setLength(maxlength);
     }
     reflexingLines.last().setP2(intersectionpoint);

     update();
     //repaint();
   }
}


void MyWidget::paintEvent(QPaintEvent *)
{
   QPainter painter(this);
   painter.setRenderHint(QPainter::Antialiasing);
   painter.setPen(Qt::black);

   for (int i=0; i<reflexingLines.size(); i++){
       painter.setPen(Qt::black);
       painter.drawLine(reflexingLines.at(i));
       //painter.setPen(Qt::red);
       //painter.drawEllipse(reflexingLines.at(i).p2(), 30,30);
   }

   painter.setPen(Qt::cyan);
   for (int i=0; i<walls.size(); i++){
       painter.drawLine(walls.at(i));
   }


   //make mask in order mouse can click throught window.
   if (clickThroughWindowFlag ){
       QRegion r1(rect());
       QRegion r2(QRect(cursorpos.x()-2, cursorpos.y()-2, 5, 5));
       QRegion r3(r1.xored(r2));
       setMask(r3);
   } else {
       painter.setPen(Qt::red);
       painter.drawText(rect(), Qt::AlignCenter, "-->  Clicking Through Window Desabled  <--\nPress Space to Enable");
   }

   //draw statistics on the right of the screen.//
   if (statsFlag){
       painter.setPen(Qt::blue);
       QString strx, stry, repainttimerstr, refreshratestr, refllinesstr;
       strx.setNum(cursorpos.x(), 'g', 10);
       stry.setNum(cursorpos.y(), 'g',10);
       repainttimerstr.setNum(repainttimer, 10);
       refreshratestr.setNum(refreshrate, 10);
       refllinesstr.setNum(reflexingLines.size()-1, 10);
       painter.drawText(rect(), Qt::AlignBottom | Qt::AlignRight, strx + " , " + stry + " \n"
                        + refreshratestr + "Hz, " + repainttimerstr + "msec \n" + refllinesstr + " Refl rays \n\n");

       //painter.drawText(cursorpos, strx + " , " + stry);
   }
}

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);

   MyWidget w1;
   w1.setUpdatesEnabled(true);
   //w1.setWindowOpacity(1);
   //w1.setMouseTracking(true);
   w1.setAttribute(Qt::WA_TranslucentBackground);
   w1.setWindowFlags(Qt::WindowStaysOnTopHint);

   //w1.setAutoFillBackground(false);
   w1.showMaximized();
   //w1.show();
   //w1.showFullScreen();
   //w1.showMaximized();
   w1.setFocus();
   return app.exec();
}

 

Και το εκτελέσιμο για LINUX. (ακόμη δεν έβαλα το Qt στα windows..!)

popup_v2.zip

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ο κώδικας διορθώθηκε και δουλεύει τέλεια..

Απλά μένουν να προγραμματιστούν διάφορες ευκολίες για τον ορισμό των τοίχων κλπ... Κατά τα άλλα αν αυτοί οριστούν στον κώδικα χειροκίνητα λειτουργούν κανονικότατα.

Το λάθος που είχε ο προηγούμενος κώδικα ήταν ότι η γραμμή

minraylength = maxlength; που αρχικοποιεί την απόσταση από τοίχο στο μέγιστο είχε ξεμείνει έξω από τη for που υπολογίζει περισσότερες ακτίνες...

Τέλος πάντων ο κώδικας..

 

>#include <QtGui>

class MyWidget : public QWidget
{
public:
   MyWidget();

private:
   QList <QLineF> walls;
   QList <QLineF> reflexingLines;
   QLineF tempLine;
   int repainttimer/*time between refreshes*/, refreshrate/*in Hz*/, timerID, maxReflexingLines;
   int reflexingLineCount, reflexingwall, prevreflexingwall;
   QPointF cursorpos, startpos;
   QPointF intersectionpoint, tempintersectionpoint;
   double maxlength, minraylength;
   bool clickThroughWindowFlag, statsFlag;


protected:
   void paintEvent(QPaintEvent *);
   void timerEvent(QTimerEvent *);
   void keyPressEvent(QKeyEvent *);
   void resizeEvent(QResizeEvent *);
   //bool event(QEvent *);
};


MyWidget::MyWidget()
{
   refreshrate = 40;
   repainttimer = 1000/refreshrate;
   timerID = startTimer(repainttimer);

   maxReflexingLines = 3;
   
   startpos = QPoint(0, 0);
   clickThroughWindowFlag = false;
   statsFlag = true;

   walls << QLineF(rect().topRight(), rect().bottomRight());
   walls << QLineF(rect().bottomRight(), rect().bottomLeft());
   walls << QLineF(rect().bottomLeft(), rect().topLeft());
   walls << QLineF(rect().topLeft(), rect().topRight());
   
}

void MyWidget::resizeEvent(QResizeEvent *){
   walls.replace(0, QLineF(rect().topRight(), rect().bottomRight()));
   walls.replace(1, QLineF(rect().bottomRight(), rect().bottomLeft()));
   walls.replace(2, QLineF(rect().bottomLeft(), rect().topLeft()));
   walls.replace(3, QLineF(rect().topLeft(), rect().topRight()));

   maxlength = rect().width() + rect().height();
}


void MyWidget::keyPressEvent(QKeyEvent *keyevent){

   if(keyevent->key()==(Qt::Key_F)){
       startpos = cursorpos;
   }

   if(keyevent->key() == Qt::Key_Up){
       maxReflexingLines++;
   }

   if(keyevent->key() == Qt::Key_Down){
       if(maxReflexingLines > 1){
           maxReflexingLines--;
       }
   }

   if(keyevent->key() == Qt::Key_V){
       walls << QLineF(cursorpos.x(), rect().top(), cursorpos.x(), rect().bottom());
   }

   if(keyevent->key() == Qt::Key_H){
       walls << QLineF(rect().left(), cursorpos.y(), rect().right(), cursorpos.y());
   }

   if(keyevent->key() == Qt::Key_Escape){
       exit(0);
   }

   if(keyevent->key() == Qt::Key_C){
       for(int i = walls.size()-1; i>3; i--){
           walls.removeAt(i);
       }
   }

   if(keyevent->key()==(Qt::Key_Space)){
       clickThroughWindowFlag = !clickThroughWindowFlag;
   }

   if(keyevent->key()==(Qt::Key_S)){
       statsFlag = !statsFlag;
   }

   //increase refresh rate an restart timer.
   if(keyevent->key()==(Qt::Key_M)){
       refreshrate+=1;
       repainttimer = 1000/refreshrate;
       killTimer(timerID);
       timerID = startTimer(repainttimer);
   }

   //Decrease refresh rate and restart timer.
   if(keyevent->key()==(Qt::Key_L)){
       if (refreshrate > 1) refreshrate-=1;

       repainttimer = 1000/refreshrate;
       killTimer(timerID);
       timerID = startTimer(repainttimer);
   }
   update();
}

//bool event(QEvent *){
//
//    return false;
//}


void MyWidget::timerEvent(QTimerEvent *){
   QLineF::IntersectType interType;
   if(mapFromGlobal(QCursor::pos()) != cursorpos){

     cursorpos = mapFromGlobal(QCursor::pos());
     reflexingLines.clear();
     reflexingLines << QLineF(startpos, cursorpos);
     reflexingLines[0].setLength(maxlength);

     prevreflexingwall = -1;
     for (reflexingLineCount=0; reflexingLineCount < maxReflexingLines; reflexingLineCount++){
         minraylength = maxlength;
         for(int i=0; i<walls.size(); i++){
             if(i != prevreflexingwall){
                 interType = reflexingLines.at(reflexingLineCount).intersect(walls.at(i), &tempintersectionpoint);
                 if (interType == 1){
                     if (QLineF(reflexingLines.at(reflexingLineCount).p1(), tempintersectionpoint).length() < minraylength &&
                         QLineF(reflexingLines.at(reflexingLineCount).p1(), tempintersectionpoint).length() != 0){
                         minraylength = QLineF(reflexingLines.at(reflexingLineCount).p1(), tempintersectionpoint).length();
                         intersectionpoint = tempintersectionpoint;
                         reflexingwall = i;
                     }
                 }
             }
         }
         prevreflexingwall = reflexingwall;
         reflexingLines[reflexingLineCount].setP2(intersectionpoint);

         reflexingLines.append(QLineF(intersectionpoint.x(), intersectionpoint.y(), 0, 0));
         reflexingLines.last().setAngle(walls[reflexingwall].angle() + reflexingLines[reflexingLineCount].angleTo(walls[reflexingwall]));
         reflexingLines.last().setLength(maxlength);
     }
     reflexingLines.last().setP2(intersectionpoint);

     update();
     //repaint();
   }
}


void MyWidget::paintEvent(QPaintEvent *)
{
   QPainter painter(this);
   painter.setRenderHint(QPainter::Antialiasing);
   painter.setPen(Qt::black);

   for (int i=0; i<reflexingLines.size(); i++){
       painter.setPen(Qt::black);
       painter.drawLine(reflexingLines.at(i));
       //painter.setPen(Qt::red);
       //painter.drawEllipse(reflexingLines.at(i).p2(), 30,30);
   }

   painter.setPen(Qt::cyan);
   for (int i=0; i<walls.size(); i++){
       painter.drawLine(walls.at(i));
   }


   //make mask in order mouse can click throught window.
   if (clickThroughWindowFlag ){
       QRegion r1(rect());
       QRegion r2(QRect(cursorpos.x()-2, cursorpos.y()-2, 5, 5));
       QRegion r3(r1.xored(r2));
       setMask(r3);
   } else {
       painter.setPen(Qt::red);
       painter.drawText(rect(), Qt::AlignCenter, "-->  Clicking Through Window Desabled  <--\nPress Space to Enable");
   }

   //draw statistics on the right of the screen.//
   if (statsFlag){
       painter.setPen(Qt::blue);
       QString strx, stry, repainttimerstr, refreshratestr, refllinesstr;
       strx.setNum(cursorpos.x(), 'g', 10);
       stry.setNum(cursorpos.y(), 'g',10);
       repainttimerstr.setNum(repainttimer, 10);
       refreshratestr.setNum(refreshrate, 10);
       refllinesstr.setNum(reflexingLines.size()-1, 10);
       painter.drawText(rect(), Qt::AlignBottom | Qt::AlignRight, strx + " , " + stry + " \n"
                        + refreshratestr + "Hz, " + repainttimerstr + "msec \n" + refllinesstr + " Refl rays \n\n");

       //painter.drawText(cursorpos, strx + " , " + stry);
   }
}

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);

   MyWidget w1;
   w1.setUpdatesEnabled(true);
   //w1.setWindowOpacity(1);
   //w1.setMouseTracking(true);
   w1.setAttribute(Qt::WA_TranslucentBackground);
   w1.setWindowFlags(Qt::WindowStaysOnTopHint);

   //w1.setAutoFillBackground(false);
   w1.showMaximized();
   //w1.show();
   //w1.showFullScreen();
   //w1.showMaximized();
   w1.setFocus();
   return app.exec();
}

 

Και το εκτελέσιμο για LINUX. (ακόμη δεν έβαλα το Qt στα windows..!)

 

Να επιβεβαιώσω ότι μόλις τώρα το έτρεξα σε Ubuntu 10.10 και λειτουργεί μια χαρά. Και να μην το βάλεις, μη σου πω βγάλε και τα Windows! :lol:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Να επιβεβαιώσω ότι μόλις τώρα το έτρεξα σε Ubuntu 10.10 και λειτουργεί μια χαρά. Και να μην το βάλεις, μη σου πω βγάλε και τα Windows!

η μόνη αλλαγή που πρέπει να γίνει στο project ! :mrgreen:

 

καλό σκ

 

.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.


  • Δημιουργία νέου...