我在做大型應用程序,它需要快速。我有一個窗口被加載,然後我將6個圖像縮放到126x105的大小,然後將它們設置爲6個按鈕上的圖標。此過程需要大約2秒才能完成,並且在縮放這6張圖片之前不會顯示GUI。有沒有什麼方法可以顯示圖形用戶界面,並且在加載圖形用戶界面後,縮放圖像並將其設置爲圖標 這是代碼:Qt C++加載GUI然後加載其他設置
f = new QFrame(this);
f->setStyleSheet("background-color: rgba(240, 240, 240, 85%);"
"border: 2px solid green;"
"border-radius: 12px;");
f->setGeometry(this->width/2-250, this->height/2-200, 500, 300);
f->show();
frameZatvori = new QPushButton(this);
frameZatvori->setFlat(true);
frameZatvori->setFont(QFont("Droid Sans", 9, QFont::Bold));
frameZatvori->setGeometry(f->x()+475, f->y()+10, 15, 15);
frameZatvori->setText("X");
frameZatvori->setFocusPolicy(Qt::NoFocus);
frameZatvori->show();
promjenaP1 = new QPushButton(this);
promjenaP1->setFlat(true);
promjenaP1->setStyleSheet("border-color: solid blue;"
"border: 3px;"
"border-radius: 9px;");
promjenaP1->setFocusPolicy(Qt::NoFocus);
promjenaP1->setGeometry(f->x()+30, f->y()+30, 126, 105);
promjenaP1->show();
promjenaP2 = new QPushButton(this);
promjenaP2->setFlat(true);
promjenaP2->setFocusPolicy(Qt::NoFocus);
promjenaP2->setGeometry(promjenaP1->x()+156, f->y()+30, 126, 105);
promjenaP2->show();
promjenaP3 = new QPushButton(this);
promjenaP3->setFlat(true);
promjenaP3->setFocusPolicy(Qt::NoFocus);
promjenaP3->setGeometry(promjenaP2->x()+156, f->y()+30, 126, 105);
promjenaP3->show();
promjenaP4 = new QPushButton(this);
promjenaP4->setFlat(true);
promjenaP4->setFocusPolicy(Qt::NoFocus);
promjenaP4->setGeometry(f->x()+30, promjenaP1->y()+135, 126, 105);
promjenaP4->show();
promjenaP5 = new QPushButton(this);
promjenaP5->setFlat(true);
promjenaP5->setFocusPolicy(Qt::NoFocus);
promjenaP5->setGeometry(promjenaP1->x()+156, promjenaP1->y()+135, 126, 105);
promjenaP5->show();
promjenaP6 = new QPushButton(this);
promjenaP6->setFlat(true);
promjenaP6->setFocusPolicy(Qt::NoFocus);
promjenaP6->setGeometry(promjenaP2->x()+156, promjenaP1->y()+135, 126, 105);
promjenaP6->show();
QObject::connect(frameZatvori, SIGNAL(clicked()), this, SLOT(zatvoriPozadineFunkcija()));
QPixmap slika("/home/alen/QtSDK/writer/Pozadine/slika.jpg");
QPixmap prebaci = slika.scaled(126, 105, Qt::IgnoreAspectRatio, Qt::FastTransformation);
promjenaP1->setIcon(prebaci);
promjenaP1->setIconSize(QSize(126, 105));
QPixmap slika1("/home/alen/QtSDK/writer/Pozadine/slika1.jpg");
QPixmap prebaci1 = slika1.scaled(126, 105, Qt::IgnoreAspectRatio, Qt::FastTransformation);
promjenaP2->setIcon(prebaci1);
promjenaP2->setIconSize(QSize(126, 105));
QPixmap slika2("/home/alen/QtSDK/writer/Pozadine/slika2.jpg");
QPixmap prebaci2 = slika2.scaled(126, 105, Qt::IgnoreAspectRatio, Qt::FastTransformation);
promjenaP3->setIcon(prebaci2);
promjenaP3->setIconSize(QSize(126, 105));
QPixmap slika3("/home/alen/QtSDK/writer/Pozadine/slika3.jpg");
QPixmap prebaci3 = slika3.scaled(126, 105, Qt::IgnoreAspectRatio, Qt::FastTransformation);
promjenaP4->setIcon(prebaci3);
promjenaP4->setIconSize(QSize(126, 105));
QPixmap slika4("/home/alen/QtSDK/writer/Pozadine/slika4.jpg");
QPixmap prebaci4 = slika4.scaled(126, 105, Qt::IgnoreAspectRatio, Qt::FastTransformation);
promjenaP5->setIcon(prebaci4);
promjenaP5->setIconSize(QSize(126, 105));
QPixmap slika5("/home/alen/QtSDK/writer/Pozadine/slika5.jpg");
QPixmap prebaci5 = slika5.scaled(126, 105, Qt::IgnoreAspectRatio, Qt::FastTransformation);
promjenaP6->setIcon(prebaci5);
promjenaP6->setIconSize(QSize(126, 105));
負載的方式,但最好的辦法是讓他們預先縮放。 – Pete 2013-04-23 12:09:59
爲什麼不預先縮放圖像並將它們存儲在'.qrc'文件中? – trojanfoe 2013-04-23 12:10:33
你可以使用一個線程(如果你不想阻塞用戶界面,最好的辦法),或者使用從構造函數發送的排隊信號/插槽連接,一旦事件循環開始,它就會觸發。 – Pete 2013-04-23 12:10:54