Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

QT Pitanja i objasnjenja

[es] :: C/C++ programiranje :: QT Pitanja i objasnjenja

Strane: 1 2 3 4 5

[ Pregleda: 11259 | Odgovora: 84 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FantasticFour

Član broj: 267424
Poruke: 53
212.178.239.*



+10 Profil

icon QT Pitanja i objasnjenja17.10.2010. u 19:11 - pre 164 meseci
Evo ovako radim u qt-creatoru i imam nekoliko pitanja

1 Kako da menjam boju widgetima???
2 Kako da stavim sliku kao pozadinu nekog prozora
3 Kako da namestim signal kada se MainWindow resizira tj kad promenim njegovu velicinu da se nesto desi
4 sad sam stavio TextEdit na MainWindow i kako sad da podesim da se moji tekstualni fajlovi otvaraju pomocu tog programa i da se text ispise u textEdit??? Znam da se koristi QFile i da treba taj fajl da bude argument pa da ga procita u npr QString i onda sadrzaj stringa ispise u textEdit ali ako moze objasnjenje

evo to je to a ima jos dosta pitanja
ali doce i oni na red
Hvala unapred i nadam se da cete mi pomoci

 
Odgovor na temu

Sale_123
C++ Developer
Wien

Član broj: 23293
Poruke: 219
*.cust.tele2.at.



+120 Profil

icon Re: QT Pitanja i objasnjenja17.10.2010. u 20:05 - pre 164 meseci
1. Pogledaj u QtCreator-u svojstvo palette

2. Sto se tice pozadine nisam siguran za ostale widget-e, ali za QLabel mozes da koristis svojstvo Pixmap

3. Nisam siguran da postoji signal za resize, ali uvijek mozes da iskoristis resizeEvent

4. QFile i QTextDocument

Mada ne znam koliko ce ti sve ovo pomoci, posto vjerujem da se pocetnik u Qt. Pokusaj da pronadjes knjigu

C++ GUI Programming with Qt 4, Second Edition .

Jako dobra knjiga. Kasnije mozes koristiti Qt dokumentaciju koja je (po meni) jedna od najbolje pisanih dokumentacija koje sam ikada citao.

...
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: QT Pitanja i objasnjenja17.10.2010. u 21:46 - pre 164 meseci
PA to za file- ove sam ti objasnio na ovoj temi http://www.elitesecurity.org/t411399-QT-fajlovi
Signal za resize ne postoji.

Ali mozes da overidujes dogadjaj
virtual void resizeEvent(QResizeEvent* event) i da napravis svoj signal i da ga emitujes.

ovako od prilike

Code:

void MyMainWindow::resizeEvent(QResizeEvent* event)
{
        QMainWindow::resizeEvent(event);
        emit resizeSignal(event->size());
}


U headeru klase MyMainWindow moras da deklarises signal.
npr

Code:

class MyMainWindow: public QMainWindow
{
       Q_OBJECT
       ...
       signals:
       void resizeSignal(const QSize& size);
       ...
}


PS
Kada koristis signale i slotove moras u headeru klase na pocetku definicije klase da stavis Q_OBJECT.
I kada definises signal za njega ne pises implementaciju nego ga deklarises kao sto sam ti napisao.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja17.10.2010. u 22:12 - pre 164 meseci
Citat:
FantasticFour: 2 Kako da stavim sliku kao pozadinu nekog prozora


Pregazi metodu paintEvent().
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja17.10.2010. u 23:12 - pre 164 meseci
Citat:
FantasticFour: 4 sad sam stavio TextEdit na MainWindow i kako sad da podesim da se moji tekstualni fajlovi otvaraju pomocu tog programa i da se text ispise u textEdit??? Znam da se koristi QFile i da treba taj fajl da bude argument pa da ga procita u npr QString i onda sadrzaj stringa ispise u textEdit ali ako moze objasnjenje


Da li ti pomaže projektić iz priloga?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Prikačeni fajlovi
 
Odgovor na temu

FantasticFour

Član broj: 267424
Poruke: 53
..106.109.adsl.dyn.beotel.net.



+10 Profil

icon Re: QT Pitanja i objasnjenja21.10.2010. u 17:10 - pre 164 meseci
OK

evo jos jedno pitanje

kako da se radi neki proces u pozadini
npr ja pokrecem neku shell komandu npr firefox
i sve dok korisnik ne ugasi firefox program je zaledjen
kako da se pokrene firefox u pozadini i da i dalje mogu raditi u programu

i kako da nekako ako je moguce sklonim window border tj ono x minimize itd ali ceo window border
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja21.10.2010. u 18:42 - pre 164 meseci
Citat:
FantasticFour: OK

evo jos jedno pitanje

kako da se radi neki proces u pozadini
npr ja pokrecem neku shell komandu npr firefox
i sve dok korisnik ne ugasi firefox program je zaledjen
kako da se pokrene firefox u pozadini i da i dalje mogu raditi u programu


Rekoh ti da proučiš klasu QProcess. U dokumentaciji sve lepo piše.
Citat:
FantasticFour: i kako da nekako ako je moguce sklonim window border tj ono x minimize itd ali ceo window border


Code:
window->setWindowFlags(Qt::FramelessWindowHint);
window->show();

Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

FantasticFour

Član broj: 267424
Poruke: 53
..106.109.adsl.dyn.beotel.net.



+10 Profil

icon Re: QT Pitanja i objasnjenja21.10.2010. u 19:58 - pre 164 meseci
OK

za QProcess ako hocu da pokrenem neki prog

a sta ako hocu da radim 2 radnje u isto vreme

npr da nesto stalno proveravam sa while petljom i da uz to nesto radi for petlja i npr da u isto vreme ispise nesto u lineEdit

kako to????????????
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.ptt.rs.



+2789 Profil

icon Re: QT Pitanja i objasnjenja21.10.2010. u 20:08 - pre 164 meseci
Za paralelan rad delova tvog programa (dakle, nema veze sa pokretanjem drugih procesa, kao što je fajerfoks) koristi niti. Dakle, prouči upotrebu klase QThread. E, sad, trebaće ti da znaš nešto i o nitima i sinhronizaciji uopšte. Na to ne mogu dati kratak odgovor.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

FantasticFour

Član broj: 267424
Poruke: 53
..106.109.adsl.dyn.beotel.net.



+10 Profil

icon Re: QT Pitanja i objasnjenja22.10.2010. u 16:44 - pre 164 meseci
ajde ako mozes to da mi objasnis
gledao sam malo po dokumentaciji ali jos uvek ne shvatam
kako taj paralelan rad

znaci i while petlja i for petlja i ispis neceg treceg

tamo u primeru je dat isti zadatak a ja hocu razlicite
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
79.101.51.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja23.10.2010. u 11:29 - pre 164 meseci
Javljam se sa računara na kome nije instaliran Qt, tako da ne očekuj primer danas.

Evo, ovako. Definišeš tri klase Thread1, Thread2 i Thread3. Sve tri naslede QThread i u svim trima redefinišeš metodu run tako što u njeno telo upišeš ono što bi hteo da jedna nit tog tipa radi. Onda instanciraš objekte tih tipova i pozoveš im metod start.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja24.10.2010. u 20:57 - pre 164 meseci
Evo primera koji racuna Fibonacijev niz tako sto nasledjuje QThread:
Code (cpp):

#include <QCoreApplication>
#include <QThread>
#include <iostream>
#include <cstdlib>


using std::cout;
using std::endl;


// calculates Fibonacci array
class Thread : public QThread
{
private:

     long prev1;
     
     long prev2;
     
public:

     Thread(long p1, long p2) : prev1(p1), prev2(p2)
     {
     }
     
     
     void run()
     {
          while (true)
          {
               long n = this->prev1 + this->prev2;
               cout << QThread::currentThreadId() << "::Run::run():n=" << n << endl;
               this->prev1 = this->prev2;
               this->prev2 = n;
               Thread::usleep(100000);
          }
     }
};


// starts three threads
int main(int argc, char* argv[])
{
     QCoreApplication app(argc, argv);
     Thread t1(1, 1);
     Thread t2(1, 1);
     Thread t3(1, 1);
     t1.start();
     t2.start();
     t3.start();
     t1.wait();
     t2.wait();
     t3.wait();

     return EXIT_SUCCESS;
}
 

Ovde tri niti svaka za sebe paralelno racunaju zasebne Fibonacijeve nizove.

Evo primera koji nasledjuje QRunnable i koristi QThreadPool umesto da rucno pravis niti:
Code (cpp):

#include <QCoreApplication>
#include <QRunnable>
#include <QThread>
#include <QThreadPool>
#include <iostream>
#include <cstdlib>


using std::cout;
using std::endl;


// calculates Fibonacci array, it is not thread-safe because 'prev1' and 'prev2' of the same object are shared among threads
class Run : public QRunnable
{
private:

     long prev1;
     
     long prev2;
     
public:

     Run(long p1, long p2) : prev1(p1), prev2(p2)
     {
     }
     
     
     void run()
     {
          // support executing the same runnable more than once
          QThreadPool::globalInstance()->tryStart(this);

          while (true)
          {
               long n = this->prev1 + this->prev2;
               cout << QThread::currentThreadId() << "::Run::run():n=" << n << endl;
               this->prev1 = this->prev2;
               this->prev2 = n;
               usleep(100000);
          }
     }
};


// starts two runnables, 'r1' is shared among two threads
int main(int argc, char* argv[])
{
     QCoreApplication app(argc, argv);
     
     cout << "global pool:active=" << QThreadPool::globalInstance()->activeThreadCount() << ",max=" << QThreadPool::globalInstance()->maxThreadCount() << endl;
     
     Run* r1 = new Run(1, 1);
     Run* r2 = new Run(1, 1);
     QThreadPool::globalInstance()->start(r1);
     QThreadPool::globalInstance()->start(r1);
     QThreadPool::globalInstance()->start(r2);

     return EXIT_SUCCESS;
}
 

Obrati paznju da drugi primer ne vodi racuna o sinhronizaciji izmedju niti. To znaci da se r1 deli izmedju razlicitih niti, koje zato rade sa istim Fibonacijevim nizom sto dovodi do problema tj. netacnog racunanja Fibonacijevog niza. r2 se koristi u jednoj niti i nema tih problema jer ne mora nista da se sinhronizuje.

Cim pohvatas kako se radi sa nitima, moraces da pogledas cemu sluze muteksi (QMutex) koji sluze da resavaju ovakve probleme sinhronizacija.

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja24.10.2010. u 23:03 - pre 164 meseci
Evo i mog primera.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Prikačeni fajlovi
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.dynamic.sbb.rs.



+1 Profil

icon Re: QT Pitanja i objasnjenja25.10.2010. u 07:42 - pre 164 meseci
Ovaj tvoj primer mora sa Qt 4.7. Ima li neki poseban razlog sto ne moze neki stariji iz grane 4.x (konkretno, 4.4.3 pod FreeBSD-om)?
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja25.10.2010. u 07:48 - pre 164 meseci
moc_mainwindow.cpp je kreiran sa Qt 4.7. Izbaciti njega i onda će svaki Qt 4.x da kompajlira.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

FantasticFour

Član broj: 267424
Poruke: 53
..106.109.adsl.dyn.beotel.net.



+10 Profil

icon Re: QT Pitanja i objasnjenja26.10.2010. u 14:11 - pre 164 meseci
ok shvatio sam ovo oko niti

e kako sad da npr pozadina nekog prozora bude neka slika
znaci background da bude neka slika nekog prozora

i jos jedno pitanje
koristim QTCreator
i kako sad da npr kada promenim velicinu prozora da se i widgeti pomeraju sa njim
npr imam textedit i kada promenim velicinu prozora on ostaje na pocetnoj velicini(textedit)
kako i da textedit menja velicinu zajedno sa prozorom
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja26.10.2010. u 17:41 - pre 164 meseci
Oko niti postoji jedna bitna stvar - sinhronizacija. To obavezno prouči, jer ti u protivnom programi neće raditi kako treba.

Što se tiče ovog tvog novog pitanja, igraj se malo sa Lay Out ikonama u meniju Qt Designer-a i sa Spacers kontrolama.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

FantasticFour

Član broj: 267424
Poruke: 53
212.178.229.*



+10 Profil

icon Re: QT Pitanja i objasnjenja26.10.2010. u 20:59 - pre 164 meseci
ok a kako da postavim sliku u pozadinu prozora

i jos jedno pitanje
hocu da uradim svoj installer za ubuntu
e ako neko moze da mi objasni kako to installer funkcionise tj sta treba da radi
program za particionisanje neka bude cfdisk a installer ne mora imati ni gui za pocetak
znaci samo kako funkcionise
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: QT Pitanja i objasnjenja27.10.2010. u 00:08 - pre 164 meseci
Što se pozadine tiče, jedino što mi pada na pamet je predefinisanje metode paintEvent.

Što se instalera tiče, on za jednostavne programke treba samo da iskopira potrebne fajlove (uključujući i ikonu na desktopu ako ej potrebno).
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: QT Pitanja i objasnjenja27.10.2010. u 00:43 - pre 164 meseci
Za pozadinu mozes da uradis kao sto je Nedeljko rekao.

A mozes i na sledeci nacin

Da stavis u konstruktoru QLabel sa parametrom this
QLabel* label= new QLabel(this);
On ce biti postavljen po defaultu na koordinatu 0,0.
Unda za label size stavis da je jednak sa window size.
Ucitas pozadinu u label.

Ovo stavis na pocetku konstruktora pre setupUI.

I sve sto si kasnije dodao na formu ce biti iscrtano preko te labele.
 
Odgovor na temu

[es] :: C/C++ programiranje :: QT Pitanja i objasnjenja

Strane: 1 2 3 4 5

[ Pregleda: 11259 | Odgovora: 84 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.