1
메인 윈도우의 버튼을 클릭 할 때 QProgressBar를 사용하여 새 윈도우를 만들고 있지만 새 윈도우가 생성 될 때주기가 작동하는 동안 QProgressBar가 나타나지 않습니다. 그 후 QProgressBar가 나타나고 채워집니다.QProgressBar 새 창에서 작동하지 않습니다.
생성자 :
void RsaMainWindow::ButtClickCrypt()
{
FileName1 = ui->LineCrypt->text();
if(FileName1.isEmpty()) {
QMessageBox::information(0, "Information", "File for Crypt wasn't chosen");
return;
}
NewWin = new ProgressWin;
}
클래스 새 창 : : MainWindow를위한
class ProgressWin : public QWidget
{
QProgressBar *bar1;
public:
ProgressWin();
};
등급 :
[namespace Ui {
class RsaMainWindow;
}
class RsaMainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit RsaMainWindow(QWidget *parent = 0);
~RsaMainWindow();
private slots:
void ButtClickViewCryp();
void ButtClickViewDecr();
void ButtClickViewKeys();
void ButtClickCrypt();
void ButtClickDecr();
private:
Ui::RsaMainWindow *ui;
QString FileName1;
QString FileName2;
QString FileName3;
ProgressWin *NewWin;
};][1]
012 새 창 호출 버튼의
ProgressWin::ProgressWin():QWidget()
{
this->resize(273,98);
this->move(670, 430);
bar1 = new QProgressBar(this);
bar1->setGeometry(20, 31, 251, 31);
bar1->setMinimum(0);
bar1->setMaximum(10000);
this->show();
unsigned long long secr, PQ;
unsigned long long rv;
unsigned long long decr;
for(int v = 0; v <= 100000; v++) {
bar1->setValue(v);
}
}
코드 "무거운 작업을 수행"의 사용자 클릭이,이 클릭을 관리하는 코드가 때의 GUI 스레드에서 무거운 작업을 구현하는 경우
While (not closing the app)
Wait for some event
update app according event
endWhile
: 3,516,
업데이트를 위해 GUI로 제어권을 반환하지 않는 for-loop에서 채우는 경우 진행률 표시 줄이 눈에 띄게 채워지는 이유는 무엇입니까? – UnholySheep
GUI에 대해 좀 더 익숙해지고 이벤트 처리 루프 등에 대해 읽어야합니다. – Hayt